Shiro的Web——深入浅出学Shiro细粒度权限开发框架——私塾在线原创
2017-02-06 17:54
531 查看
nShiro可以和普通web集成的,但考虑到现在的应用基本都会使用spring,所以就不去讲最基本的web集成了。跟Spring集成的方式前面已经讲过了。
n在Web应用中,可以配置[urls]:
[urls]项允许你做一些在我们已经见过的任何Web 框架都不存在的东西:在你的应用程序中定义自适应过滤器链来匹配URL 路径!
n[urls]的格式
URL_Ant_Path_Expression = Path_Specific_Filter_Chain
例如:
…
[urls]
/index.html = anon
/user/create = anon
/user/** = authc
/admin/** = authc, roles[administrator]
/rest/** = authc, rest
/remoting/rpc/** = authc, perms["remot:invoke"]
nURL Path Expressions
等号左边是一个与Web 应用程序上下文根目录相关的Ant 风格的路径表达式。
它是第一次匹配优先的方式,比如:
/account/** = ssl, authc
/account/signup = anon
如果传入的请求旨在访问/account/signup/index.html(所有'anon'ymous 用
户都能访问),那么它将永不会被处理!原因是因为/account/**的模式第一个匹配了传入的请求,“短路”了其余的定义。
nFilter Chain Definitions
等号右边是逗号隔开的过滤器列表,用来执行匹配该路径的请求。它必须符合以下格式:filter1[optional_config1], filter2[optional_config2], ...
(1)filterN 是一个定义在[main]项中的filter bean 的名字
(2)[optional_configN]是一个可选的括号内的对特定的路径,特定的过滤器有特定含义的字符串(每个过滤器,每个路径的具体配置!)。若果该过滤器对该URL 路径并不需要特定的配置,你可以忽略括号,于是filteNr[]就变成了filterN.
n默认的Filter 实例
nanon:例子/admins/**=anon 没有参数,表示可以匿名使用
nauthc:例如/admins/user/**=authc表示需要认证(登录)才能使用,没有参数
nauthcBasic:例如/admins/user/**=authcBasic没有参数表示httpBasic认证
n
nlogout:注销登录的时候,完成一定的功能,任何现有的Session 都将会失效,而且任何身份都将会失去关联(例如,在Web 应用程序中,RememberMe cookie 也将被删除)
n
nnoSessionCreation:阻止在请求期间创建新的会话来保证无状态的体验
n
nperms:例子/admins/user/**=perms[user:add:*],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,例如/admins/user/**=perms[“user:add:*,user:modify:*”],当有多个参数时必须每个参数都通过才通过,想当于isPermitedAll()方法。
nport:例子/admins/user/**=port[8081],指定请求访问的端口
n
nrest:例子/admins/user/**=rest[user],根据请求的方法,相当于/admins/user/**=perms[user:method] ,其中method为post,get,delete等。
n
nroles:例子/admins/user/**=roles[admin],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,当有多个参数时,例如admins/user/**=roles[“admin,guest”],每个参数通过才算通过,相当于hasAllRoles()方法。
n
nssl:例子/admins/user/**=ssl没有参数,表示安全的url请求,协议为https
n
nuser:例如/admins/user/**=user没有参数表示必须存在用户,当登入操作时不做检查
Tag Libary
n引入Tag
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
nThe guest tag
guest 标签将显示它包含的内容,仅当当前的Subject 被认为是‘guest’时。‘guest’是指没有身份ID 的任何Subject。也就是说,我们并不知道用户是谁,因为他们没有登录并且他们没有在上一次的访问中被记住(RememberMe 服务), guest 标签与user 标签逻辑相反。例子:
<shiro:guest>
Hi there! Please <a href="login.jsp">Login</a> or <a href="signup.jsp">Signup</a>today!
</shiro:guest>
nThe user tag
user 标签将显示它包含的内容,仅当当前的Subject 被认为是‘user’时。‘user’在上下文中被定义为一个已知身份ID的Subject,或是成功通过身份验证及通过‘RememberMe’服务的。请注意这个标签在语义上与authenticated 标签是不同的,authenticated 标签更为严格。usre 标签与guest 标签逻辑相反。
nThe authenticated tag
仅仅只当当前用户在当前会话中成功地通过了身份验证authenticated 标签才会显示包含的内容。它比‘user’标签更为严格。它在逻辑上与‘notAuthenticated’标签相反。
nThe notAuthenticated tag
notAuthenticated 标签将会显示它所包含的内容,如果当前Subject 还没有在其当前会话中成功地通过验证。
nThe principal tag
principal 标签将会输出Subject 的主体(标识属性)或主要的属性。
nThe hasRole tag
hasRole 标签将会显示它所包含的内容,仅当当前Subject 被分配了具体的角色。 hasRole 标签与lacksRole 标签逻辑相反。 例如:
<shiro:hasRole name="administrator">
<a href="admin.jsp">Administer the system</a>
</shiro:hasRole>
nThe lacksRole tag
lacksRole 标签将会显示它所包含的内容,仅当当前Subject 未被分配具体的角色
nThe hasAnyRoles tag
hasAnyRole 标签将会显示它所包含的内容,如果当前的Subject 被分配了任意一个来自于逗号分隔的角色名列表中的具体角色。例如:
<shiro:hasAnyRoles name="developer, project manager, administrator">
You are either a developer, project manager, or administrater.
</shiro:hasAnyRoles>
nThe hasPermission tag
hasPermission 标签将会显示它所包含的内容,仅当当前Subject“拥有”(蕴含)特定的权限。也就是说,用户具有特定的能力。hasPermission 标签与lacksPermission 标签逻辑相反。例如:
<shiro:hasPermission name="user:create">
<a href="createUser.jsp">Create a new User</a>
</shiro:hasPermission>
nThe lacksPermission tag
lacksPermission 标签将会显示它所包含的内容,仅当当前Subject 没有拥有(蕴含)特定的权限。也就是说,用户没有特定的能力。
私塾在线 原创,转载请注明http://sishuok.com/forum/blogPost/list/0/7460.html
n在Web应用中,可以配置[urls]:
[urls]项允许你做一些在我们已经见过的任何Web 框架都不存在的东西:在你的应用程序中定义自适应过滤器链来匹配URL 路径!
n[urls]的格式
URL_Ant_Path_Expression = Path_Specific_Filter_Chain
例如:
…
[urls]
/index.html = anon
/user/create = anon
/user/** = authc
/admin/** = authc, roles[administrator]
/rest/** = authc, rest
/remoting/rpc/** = authc, perms["remot:invoke"]
nURL Path Expressions
等号左边是一个与Web 应用程序上下文根目录相关的Ant 风格的路径表达式。
它是第一次匹配优先的方式,比如:
/account/** = ssl, authc
/account/signup = anon
如果传入的请求旨在访问/account/signup/index.html(所有'anon'ymous 用
户都能访问),那么它将永不会被处理!原因是因为/account/**的模式第一个匹配了传入的请求,“短路”了其余的定义。
nFilter Chain Definitions
等号右边是逗号隔开的过滤器列表,用来执行匹配该路径的请求。它必须符合以下格式:filter1[optional_config1], filter2[optional_config2], ...
(1)filterN 是一个定义在[main]项中的filter bean 的名字
(2)[optional_configN]是一个可选的括号内的对特定的路径,特定的过滤器有特定含义的字符串(每个过滤器,每个路径的具体配置!)。若果该过滤器对该URL 路径并不需要特定的配置,你可以忽略括号,于是filteNr[]就变成了filterN.
n默认的Filter 实例
nanon:例子/admins/**=anon 没有参数,表示可以匿名使用
nauthc:例如/admins/user/**=authc表示需要认证(登录)才能使用,没有参数
nauthcBasic:例如/admins/user/**=authcBasic没有参数表示httpBasic认证
n
nlogout:注销登录的时候,完成一定的功能,任何现有的Session 都将会失效,而且任何身份都将会失去关联(例如,在Web 应用程序中,RememberMe cookie 也将被删除)
n
nnoSessionCreation:阻止在请求期间创建新的会话来保证无状态的体验
n
nperms:例子/admins/user/**=perms[user:add:*],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,例如/admins/user/**=perms[“user:add:*,user:modify:*”],当有多个参数时必须每个参数都通过才通过,想当于isPermitedAll()方法。
nport:例子/admins/user/**=port[8081],指定请求访问的端口
n
nrest:例子/admins/user/**=rest[user],根据请求的方法,相当于/admins/user/**=perms[user:method] ,其中method为post,get,delete等。
n
nroles:例子/admins/user/**=roles[admin],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,当有多个参数时,例如admins/user/**=roles[“admin,guest”],每个参数通过才算通过,相当于hasAllRoles()方法。
n
nssl:例子/admins/user/**=ssl没有参数,表示安全的url请求,协议为https
n
nuser:例如/admins/user/**=user没有参数表示必须存在用户,当登入操作时不做检查
Tag Libary
n引入Tag
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
nThe guest tag
guest 标签将显示它包含的内容,仅当当前的Subject 被认为是‘guest’时。‘guest’是指没有身份ID 的任何Subject。也就是说,我们并不知道用户是谁,因为他们没有登录并且他们没有在上一次的访问中被记住(RememberMe 服务), guest 标签与user 标签逻辑相反。例子:
<shiro:guest>
Hi there! Please <a href="login.jsp">Login</a> or <a href="signup.jsp">Signup</a>today!
</shiro:guest>
nThe user tag
user 标签将显示它包含的内容,仅当当前的Subject 被认为是‘user’时。‘user’在上下文中被定义为一个已知身份ID的Subject,或是成功通过身份验证及通过‘RememberMe’服务的。请注意这个标签在语义上与authenticated 标签是不同的,authenticated 标签更为严格。usre 标签与guest 标签逻辑相反。
nThe authenticated tag
仅仅只当当前用户在当前会话中成功地通过了身份验证authenticated 标签才会显示包含的内容。它比‘user’标签更为严格。它在逻辑上与‘notAuthenticated’标签相反。
nThe notAuthenticated tag
notAuthenticated 标签将会显示它所包含的内容,如果当前Subject 还没有在其当前会话中成功地通过验证。
nThe principal tag
principal 标签将会输出Subject 的主体(标识属性)或主要的属性。
nThe hasRole tag
hasRole 标签将会显示它所包含的内容,仅当当前Subject 被分配了具体的角色。 hasRole 标签与lacksRole 标签逻辑相反。 例如:
<shiro:hasRole name="administrator">
<a href="admin.jsp">Administer the system</a>
</shiro:hasRole>
nThe lacksRole tag
lacksRole 标签将会显示它所包含的内容,仅当当前Subject 未被分配具体的角色
nThe hasAnyRoles tag
hasAnyRole 标签将会显示它所包含的内容,如果当前的Subject 被分配了任意一个来自于逗号分隔的角色名列表中的具体角色。例如:
<shiro:hasAnyRoles name="developer, project manager, administrator">
You are either a developer, project manager, or administrater.
</shiro:hasAnyRoles>
nThe hasPermission tag
hasPermission 标签将会显示它所包含的内容,仅当当前Subject“拥有”(蕴含)特定的权限。也就是说,用户具有特定的能力。hasPermission 标签与lacksPermission 标签逻辑相反。例如:
<shiro:hasPermission name="user:create">
<a href="createUser.jsp">Create a new User</a>
</shiro:hasPermission>
nThe lacksPermission tag
lacksPermission 标签将会显示它所包含的内容,仅当当前Subject 没有拥有(蕴含)特定的权限。也就是说,用户没有特定的能力。
私塾在线 原创,转载请注明http://sishuok.com/forum/blogPost/list/0/7460.html
相关文章推荐
- 第九章:Shiro的Web——深入浅出学Shiro细粒度权限开发框架
- 第七章:Shiro的Session管理——深入浅出学Shiro细粒度权限开发框架
- 第十章:Shiro的Cache——深入浅出学Shiro细粒度权限开发框架
- 第四章:Shiro的身份认证(Authentication)——深入浅出学Shiro细粒度权限开发框架
- 第一章:权限管理设计基础——深入浅出学Shiro细粒度权限开发框架
- 第五章:Shiro的授权(Authorization)——深入浅出学Shiro细粒度权限开发框架
- 第八章:Shiro和Spring的集成——深入浅出学Shiro细粒度权限开发框架
- 第六章:Shiro的Realms——深入浅出学Shiro细粒度权限开发框架
- 第二章:Shiro入门——深入浅出学Shiro细粒度权限开发框架
- 第三章:Shiro的配置——深入浅出学Shiro细粒度权限开发框架
- Java WEB开发实战 之 第一部分:复习必备的基础知识【私塾在线原创】
- Java WEB开发实战 之 第二部分:Web应用基础知识【私塾在线原创】
- Shiro权限控制框架 ---SpringMVC+Spring+My batis+Mysql+Maven集成开发Web项目
- Java WEB开发实战 之 第三部分:Servlet开发(1)【私塾在线原创】
- 基于MVC4+EasyUI的Web开发框架形成之旅--权限控制
- shiro权限框架详解06-shiro与web项目整合(下)
- Java Web开发-项目部分(中国移动科技综合管理系统)视频――私塾在线提供
- 基于MVC4+EasyUI的Web开发框架形成之旅--权限控制
- 单点登录cas与权限管理框架shiro集成------普通web项目方式
- 单点登录cas与权限管理框架shiro集成------普通web项目方式