Shiro配置web应用

Shiro可以和普通web集成的,但考虑到现在的应用基本都会使用spring,所以就不去讲最基本的web集成了。跟Spring集成的方式前面已经讲过了。

n在Web应用中,可以配置[urls]:

[urls]项允许你做一些在我们已经见过的任何Web 框架都不存在的东西:在你的应用程序中定义自适应过滤器链来匹配URL 路径!

 [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

时间: 2024-11-05 12:22:26

Shiro配置web应用的相关文章

ssm整合shiro时web。xml中配置filter,tomcat报错

当我们使用ssm框架整合进行项目开发,使用Shiro作为安全验证管理,在web.xml中配置Shiro过滤器后 启动Tomcat会报错: Error during artifact deployment. See server log for details. <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property na

基于Spring + Spring MVC + Mybatis + shiro 高性能web构建

一直想写这篇文章,前段时间 痴迷于JavaScript.NodeJs.AngularJS,做了大量的研究,对前后端交互有了更深层次的认识. 今天抽个时间写这篇文章,我有预感,这将是一篇很详细的文章,详细的配置,详细的注释,看起来应该很容易懂. 用最合适的技术去实现,并不断追求最佳实践.这就是架构之道. 希望这篇文章能给你们带来一些帮助,同时希望你们可以为这个项目贡献你的想法. 源码地址:https://github.com/starzou/quick4j 点击打开 看我们的项目结构: 是一个典型

shiro与Web项目整合-Spring+SpringMVC+Mybatis+Shiro(八)

Jar包 Web.xml中配置shiro的filter <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://ja

shiro配置学习

一.shiro的配置 1.shiro的web过滤 实例化ShiroFilterFactoryBean 设置securityManager.loginUrl.unauthorizedUrl.sucessUrl.filters.filterChainDefinitions 2.securityManager安全管理器 配置realm.配置sessionManager属性(class:DefaultWebSessionManager).cacheManager(暂时不了解,可选配置) 3.realm

Apache shiro配置与使用(Spring整合)

网络上大部分的博文是关于Apache shiro与Spring MVC的整合,以及使用教程,最近在做一个物流项目的时候使用的是Apache shiro与Spring进行整合,期间遇到了一些问题,花费了一些时间才得到解决,所以本文首先会从介绍shiro框架到理解shiro以及使用shiro框架几个角度进行描述如何正确的使用与理解该框架: 1.权限概述(正确理解认证.授权的基本概念) 2.常见的权限控制的方式(URL拦截的方式.方法注解的方式) 3.权限涉及到的数据表以及模型关系 4.Apache

spring与shiro配置详解

1.加入shiro相关依赖的jar包 pom.xml部分内容如下: 1 <dependency> 2 <groupId>org.apache.shiro</groupId> 3 <artifactId>shiro-spring</artifactId> 4 <version>1.3.2</version> 5 </dependency> 6 <dependency> 7 <groupId>

shiro配置

SpringMVC整合Shiro, Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能. 第一步:配置web.xml ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <!-- 配置Shiro过滤器,先让Shiro过滤系统接收到的请求 --> <!-- 这里filter-name必须对应applicationContext.xml中定义的<bean id="shiroFilter"/> 

基于Spring框架的Shiro配置

一.在web.xml中添加shiro过滤器 Xml代码   <!-- Shiro filter--> <filter> <filter-name>shiroFilter</filter-name> <filter-class> org.springframework.web.filter.DelegatingFilterProxy </filter-class> </filter> <filter-mapping&g

Spring+shiro配置JSP权限标签+角色标签+缓存

Spring+shiro,让shiro管理所有权限,特别是实现jsp页面中的权限点标签,每次打开页面需要读取数据库看权限,这样的方式对数据库压力太大,使用缓存就能极大减少数据库访问量. 下面记录下shiro配置JSP权限标签+角色标签+缓存的过程: 1首先在配置文件xml中配置securityManager. <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityMana