发表于: 2017-06-22 10:09:32
1 1064
今天完成的事情:
1、学习shiro框架。编写用户身份验证的测试用例。
为什么要学习shiro呢?
因为将登录注册这一逻辑框架化,可以简化业务代码的编写。
shiro 框架中的关键词:
在web应用中谁能证明用户是他自己。一般需提供他们的 principals(身份:比如用户名邮箱) 与 credentials(证明:比如密码)。
subject 主体
realm 验证主体的数据源
shiro-realm.ini
#声明一个realm
myRealm1=realm.MyRealm1
#指定securityManager的realms实现
securityManager.realms=$myRealm1
@Test
public void testCustomRealm() {
//1、获取SecurityManager工厂,此处使用Ini配置文件初始化SecurityManager
Factory<SecurityManager> factory =
new IniSecurityManagerFactory("classpath:shiro-realm.ini");
//2、得到SecurityManager实例 并绑定给SecurityUtils
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
//3、得到Subject及创建用户名/密码身份验证Token(即用户身份/凭证)
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken("zhang", "123");
try {
//4、登录,即身份验证
subject.login(token);
} catch (AuthenticationException e) {
//5、身份验证失败
e.printStackTrace();
}
Assert.assertEquals(true, subject.isAuthenticated()); //断言用户已经登录
//6、退出
subject.logout();
}
1、首先通过 new IniSecurityManagerFactory 并指定一个ini配置文件来创建 一个securityManager 工厂。
2、接着获取 securityManager并绑定到securityUtils。
3、通过securityUtils取得subject。
4、调用subject.login方法进行登录。
5、
那么realm是什么呢?
shiro要进行身份验证,就要从realm中获取相应的身份信息来进行验证,简单来说,我们可以自行定义realm,在realm中,从数据库获取身份信息,然后和 用户输入的身份信息进行匹配。这一切都由我们自己来定义。
如果填写了错误的密码或用户名,报错信息如下:
明天计划的事情:
1、复盘评审。
遇到的问题:
1、关于shiro框架的一些疑问。
收获:
1、
评论