发表于: 2017-06-22 10:09:32

1 1064


今天完成的事情:

1、学习shiro框架。编写用户身份验证的测试用例。

为什么要学习shiro呢?

因为将登录注册这一逻辑框架化,可以简化业务代码的编写。

shiro 框架中的关键词:

在web应用中谁能证明用户是他自己。一般需提供他们的 principals(身份:比如用户名邮箱) 与 credentials(证明:比如密码)。 

subject 主体

realm 验证主体的数据源

shiro-realm.ini 

#声明一个realm
myRealm1=realm.MyRealm1

#指定securityManagerrealms实现
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、


返回列表 返回列表
评论

    分享到