1.导入依赖
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.5.2</version>
</dependency>
2.自定义ini
下面展示一些 内联代码片
。
#用户的身份、凭据
[users]
zhangsan=555
lisi=666
3.使用 Shiro 相关的 API 完成身份认证
下面展示一些 内联代码片
。
@Test
public void testLogin(){
//创建Shiro的安全管理器,是shiro的核心
DefaultSecurityManager securityManager = new DefaultSecurityManager();
//加载shiro.ini配置,得到配置中的用户信息(账号+密码)
IniRealm iniRealm = new IniRealm("classpath:shiro.ini");
securityManager.setRealm(iniRealm);
//把安全管理器注入到当前的环境中
SecurityUtils.setSecurityManager(securityManager);
//无论有无登录都可以获取到subject主体对象,但是判断登录状态需要利用里面的属性来判断
Subject subject = SecurityUtils.getSubject();
System.out.println("认证状态:"+subject.isAuthenticated());
//创建令牌(携带登录用户的账号和密码)
UsernamePasswordToken token = new UsernamePasswordToken("lisi","666");
//执行登录操作(将用户的和 ini 配置中的账号密码做匹配)
subject.login(token);
System.out.println("认证状态:"+subject.isAuthenticated());
//登出
subject.logout();
System.out.println("认证状态:"+subject.isAuthenticated());
}
如果输入的身份和凭证和 ini 文件中配置的能够匹配,那么登录成功,登录状态为true,反之登录状态为false
登录失败一般存在两种情况:
-
账号错误 org.apache.shiro.authc.UnknownAccountException
-
密码错误 org.apache.shiro.authc.IncorrectCredentialsException
-
测试类和ini的位置放置
4.总结
Shiro完全独立,不需要依靠spring容器就可以进行验证。