总结
shiro : 一个主流的权限管理框架 Apache
shiro :
认证:Authenticator 认证器
主体:subject 登录者
创建一个SimpleAuthenticationInfo对象 存放 用户名 数据库密码 盐
授权:
一个是角色 role
一个是权限 permission
从数据库中取出用户对应的 角色权限信息 存放到
SimpleAuthorizationInfo 对象中
加密原则
使用md5加密方式进行对密码加密 加密不可逆 比对方式 将用户输入的密码加盐加密在和数据库中加密后的密码进行对比
会话管理
sessionManager
缓存管理
cacheManager
验证码:需要继承FormAuthenticationFilter重写方法中实现在 认证之前判断验证码是否正确
记住我:cookieManager 把用户名和密码存放在cookie中 下次登录判断cookie中是否存在,如果已经存在则直接发给后台进行登录
过滤器配置:
authc: 必须认证
anon: 匿名访问
user: 认证过
logout: 退出登录
jsp:shiro标签
<shiro:authenticated/> 登录之后
<shiro:notAuthenticated/> 不在登录状态时
<shiro:guest/> 用户在没有RememberMe时
<shiro:user/> 用户在RememberMe时
<shiro:hasAnyRoles name="abc,123"/ > 在有abc或者123角色时
<shiro:hasRole name="abc"/> 拥有角色abc
<shiro:lacksRole name="abc"/> 没有角色abc
<shiro:hasPermission name="abc"/> 拥有权限资源abc
<shiro:lacksPermission name="abc"/> 没有abc权限资源
<shiro:principal/> 显示用户身份名称
<shiro:principal property="username"/> 显示用户身份中的属性
controller 中的shiro注解
@RequiresAuthentication
表示当前Subject已经通过login 进行了身份验证;即Subject. isAuthenticated()返回true。
@RequiresUser
表示当前Subject已经身份验证或者通过记住我登录的。
@RequiresGuest
表示当前Subject没有身份验证或通过记住我登录过,即是游客身份。
@RequiresRoles(value={“admin”, “user”}, logical= Logical.AND)
@RequiresRoles(value={“admin”})
@RequiresRoles({“admin“})
表示当前Subject需要角色admin 和user。
@RequiresPermissions (value={“user:a”, “user:b”}, logical= Logical.OR)
表示当前Subject需要权限user:a或user:b。