授权

来源:互联网 发布:mysql insert日期格式 编辑:程序博客网 时间:2024/04/26 08:31
1,编程式授权
1.1 基于角色的访问控制
1.2 基于权限的访问控制
2,注解式授权
@RequiresAuthentication 要求当前Subject 已经在当前的session 中被验证通过才能被访问或调用。
@RequiresGuest 要求当前的Subject 是一个"guest",也就是说,他们必须是在之前的session 中没有被验证或被记住才
能被访问或调用。
@RequiresPermissions("account:create") 要求当前的Subject 被允许一个或多个权限,以便执行注解的方法。
@RequiresRoles("administrator") 要求当前的Subject 拥有所有指定的角色。如果他们没有,则该方法将不会被执行,而
且AuthorizationException 异常将会被抛出。
@RequiresUser RequiresUser 注解需要当前的Subject 是一个应用程序用户才能被注解的类/实例/方法访问或调用。一个“应
用程序用户”被定义为一个拥有已知身份,或在当前session 中由于通过验证被确认,或者在之前session 中的'RememberMe'

服务被记住。

3,Jsp 标签授权
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
Guest 标签:用户没有身份验证时显示相应信息,即游客访问信息;
User 标签:用户已经身份验证/记住我登录后显示相应的信息;
Authenticated 标签:用户已经身份验证通过,即Subject.login 登录成功,不是记住我登录的。
notAuthenticated 标签:用户没有身份验证通过,即没有调用Subject.login 进行登录,包括记住我自动登录
的也属于未进行身份验证。
principal 标签显示用户身份信息,默认调用Subject.getPrincipal()获取,即Primary Principal。
hasRole 标签如果当前Subject 有角色将显示body 体内容。
lacksRole 标签如果当前Subject 没有角色将显示body 体内容。
hasAnyRoles 标签如果当前Subject 有任意一个角色(或的关系)将显示body 体内容。
hasPermission 标签如果当前Subject 有权限将显示body 体内容。
lacksPermission 标签如果当前Subject 没有权限将显示body 体内容。



单个权限query
单个资源多个权限user:query user:add 多值user:query,add
单个资源所有权限user:query,add,update,delete user:*
所有资源某个权限*:view
实例级别的权限控制
单个实例的单个权限printer:query:lp7200 printer:print:epsoncolor
所有实例的单个权限printer:print:*
所有实例的所有权限printer:*:*
单个实例的所有权限printer:*:lp7200
单个实例的多个权限printer:query,print:lp7200