Shiro:权限框架(开发系统肯定会做权限)
Spring security 重量级安全框架(功能更强大(细粒度
))
Apache Shiro 轻量级框架(功能弱一点(粗粒度))
面试题:Shiro与Spring security有什么区别?
Shiro是轻量级,粗粒度,Spring security是重量级,
细粒度
Shiro的四大基石:
身份验证(Authentication):登录
授权(Authorization):权限判断
密码学(Session Management):加密
会话管理(Cryptography):session
Web Support:web支持
Caching:缓存
Concurrency:连接
Run As:允许假设
Remember Me:记住
步骤:
1.先拿到factory工厂对象
2. 从工厂中拿到SecurityManager对象
3.把SecurityManageer设置到上下文中(把它放到一个
地方,然后所有位置都可以访问)
4.获取到当前用户(如果没有登录就是游客)
5.给个令牌
6.根据令牌登录
7.退出系统
异常:
UnknownAccountException:用户名错误异常
IncorrectCredentialsException:密码错误异常
AuthenticationException:神秘错误异常
自定义Realm:
1.拿到令牌(UsernamePasswordToken)
2.拿到用户名
3.根据用户名到数据库进行查询
4.我们把值传进去,他会自己帮我们判断密码,传
的是数据库密码,它要把这个密码和令牌中的密码做对比,
如果对应不上,就会报密码错误异常
Object principal:主体(用户名)
Object hashedCredentials:密码
ByteSource credentialsSalt:盐值
String realmName:realm名称