shiro是什么?
- Shiro权限管理框架(权限管理系统的非常优秀的解决方案)
- Apache顶级项目。项目除了能做认证和授权外,还有Session管理,加密,缓存...
shiro架构
- Subject:主体(用户,第三方项目)
- SecurityManager:安全管理器
- 负责对subject进行认证和授权
- 调用Authenticator进行认证
- 调用Authorizer进行授权
...
- Authenticator:认证器
- 负责实现认证
- 项目中会使用到它的一些实现类来进行真正地认证实现(ModularRealmAuthenticator)
- Authorizer:授权器
- 负责实现授权
- ModularRealmAuthorizator来进行授权
- Realm:与数据库打交道
- SessionManager:会话管理器
- CacheManager:缓存管理器
shiro认证
Subject-->SecurityManager-->Authenticator-->Realm
- 导包,建立Shiro的ini配置文件(shiro-demo.ini)
[users]
zhangsan=123456
lisi=123456
@Test
public void test(){
IniSecurityManagerFactory factory = new IniSecurityManagerFactory("classpath:shiro-demo.ini");
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
Subject subject = SecurityUtils.getSubject();
String username = "zhangsan";
String password = "123456";
UsernamePasswordToken token=new UsernamePasswordToken(username,password);
try {
subject.login(token);
} catch (AuthenticationException e) {
e.printStackTrace();
}
boolean flag = subject.isAuthenticated();
System.out.println("认证结果为:"+flag);
subject.logout();
flag = subject.isAuthenticated();
System.out.println("认证结果为:"+flag);
}
- UnknownAccountException:没有该账户
- IncorrectCredentialsException:不正确的凭证(密码没有匹配)
shiro认证的自定义Realm