Shiro的一些点
Shiro再次学习
权限:
<!--
配置哪些页面需要受保护.
以及访问这些页面需要的权限.
1). anon 可以被匿名访问
2). authc 必须认证(即登录)后才可能访问的页面.
3). logout 登出.
4). roles 角色过滤器
-->
示例:
<property name="filterChainDefinitions">
<value>
/login.jsp = anon
/shiro/login = anon
/shiro/logout = logout
/user.jsp = roles[user]
/admin.jsp = roles[admin]
# everything else requires authentication:
/** = authc
</value>
</property>
authc 拦截器会判断用户是否是通过Subject.login(isAuthenticated()==true)登录的,如果是才放行,否则会跳转到登录页面叫你重新登录。
权限补充:

获取当前用户信息:
//获取用户信息 Subject currentUser = SecurityUtils.getSubject(); //isAuthenticated(验证)方法返回一个布尔值,验证用户是否通过 currentUser.isAuthenticated() // 把用户名和密码封装为 UsernamePasswordToken 对象 UsernamePasswordToken token = new UsernamePasswordToken(username, password); //setRememberMe方法是 记住我 功能 token.setRememberMe(true);
认证:
工号ShiroRealm extends AuthenticatingRealm AuthenticatingRealm 用于认证 密码的比对: 通过AuthenticatingRealm 的 credentialsMatcher 进行比对 使用new SimpleHashs(String algoriTime(加密算法名称),Object source(用户名(加密后)),Object salt(盐值),int hashIterations) //一般盐值的取值方法 BtyeSource Salt= BtyeSource.Util.bytes(username); //返回对象 方法返回值 AuthenticationInfo 最后的对象 new SimpleAuthenticationInfo
授权:

标签:
//shiro:guest -- 用户没有验证时显示的数据,游客显示内容
<shiro:guest>
欢迎游客,<a href="login.jsp">登录</a>
</shiro:guest>
//shiro:user -- 用户已经经过认证/记住我(setRememberMe)登录后显示的信息。
<shiro:user>
欢迎[<shiro:principal>] 登录, <a href = "logout">退出</a>
</shiro:user>
//shiro:authenticated -- 用户已经通过身份验证,Subject.login登陆成功,不是记住登录。
<shiro:authenticated>
用户[<shiro:principal>] 身份已经验证。
</shiro:authenticated>
//shiro:notAuthenticated -- 用户未经过身份验证,没有调用Subject.login方法。(记住我功能,属于未验证身份)
<shiro:notAuthenticated>
未验证身份(包括记住我)
</shiro:notAuthenticated>
//显示用户信息
<shiro:principal property = "username"/>
//shiro:hasRole -- 角色认证,对登录用户的角色,进行内容显示
<shiro:hasRole name = "admin">
用户[<shiro:principal>]用户角色admin<br/>
</shiro:hasRole>
//角色认证 扩充
<shiro:hasAnyRole name = "admin,user">
用户[<shiro:principal/>] 拥有角色 admin、user权限<br/>
</shiro:hasAnyRole>
//角色显示扩充
<shiro:lackRole name = "admin">
该用户【<shiro:principal/>】没有角色
</shiro:lackRole>
//当前Subjest(登录用户) 没有权限将显示body内容
<shiro:lacksPermission name = "user:creat">
用户[<shiro:principal/>]没有权限user:creat。。
</shiro:lacksPermission>
权限注解:
//注意权限注解 不能放在Service层,事物注解和shiro注解会发生冲突
@RequireAuthentication 表示通过Subject.login的验证
@RequiresGuest : 表示当前用户已经经过认证 或者 通过 记住我的功能登录
@RequiresUser : 表示游客身份
@RequiresRoles(value = {},logical = Logical.AND):表示当前Subject需要角色admin 和 user 的权限
@RequiresPermissions : 表示当前需要权限 user:a 和 user:b 的权限

浙公网安备 33010602011771号