将Shiro
集成到任何
Web
应用程序的最简单的方法是在
web.xml
中配置
ContextListener
和
Filter
,来使
Shiro
知道如何读取
Shiro
的
INI
配置文件。
注意:Spring
框架用户将不执行此设置。如果你使用
Spring
,你将要阅读关于
Spring
特定的
Web
配置。
Web.xml
Shiro 1.2 and later
在Shiro 1.2
及以后版本,标准的
Web
应用程序通过添加下面的
XML
块到
web.xml
来初始化
Shiro
:
<listener>
<listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
</listener>
…
<filter>
<filter-name>ShiroFilter</filter-name>
<filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ShiroFilter</filter-name>
<url-pattern>*/</url-pattern>
</filter-mapping>
|
这是假设Shiro INI
配置文件在以下两个位置任意一个,并使用最先发现的那个:
1. /WEB-INF/shiro.ini
2. 在
classpath
根目录下
shiro.ini
文件
下面是上述配置所做的事情:
l
EnvironmentLoaderListener 初始化一个
Shiro WebEnvironment
实例(其中包含
Shiro
需要的一切操作,包括
SecurityManager
),使得它在
ServletContext
中能够被访问。如果你需要在任何时候获得
WebEnvironment
实例,你可以调用
WebUtils.getRequiredWebEnvironment
(
ServletContext
)。
l
ShiroFilter 将使用此
WebEnvironment
对任何过滤的请求执行所有必要的安全操作。
l
最后,filter-mapping
的定义确保了所有的请求被
ShiroFilter
过滤,建议大多数
Web
应用程序使用以确保任何请求是安全的。
默认情况下,EnvironmentLoaderListener
将创建一个
IniWebEnvironment
实例,读取
Shiro
基于
INI
文件的配置。如果你愿意,你可以在
web.xml
中指定一个自定义的
ServletContext context-param
:
<context-param>
<param-name>shiroEnvironmentClass</param-name>
<param-value>com.foo.bar.shiro.MyWebEnvironment</param-value>
</context-param>
|
IniWebEnvironment 将会去读取和加载
INI
配置文件。默认情况下,这个类会自动地在下面两个位置寻找
Shiro.ini
配置(按顺序)。
1. /WEB-INF/shiro.ini
2. classpath:shiro.ini
它将使用最先发现的那个。
然而,如果你想把你的配置放在另一位置,你可以在web.xml
中用
contex-param
指定该位置。
<context-param>
<param-name>shiroConfigLocations</param-name>
<param-value>YOUR_RESOURCE_LOCATION_HERE</param-value>
</context-param>
|
默认情况下,在ServletContext.getResource
方法定义的规则下,
param-value
是可以被解析的。例如,
/WEB-INF/some/path/shiro.ini
。
但你也可以指定具体的文件系统,如classpath
或
URL
位置,通过使用
Shiro
支持的合适的资源前缀,例如:
l
file://home/foobar/myapp/shiro.ini
l
classpath:com/foo/bar/shiro.ini
l
url:http://confighost.mycompany.com/myapp/shiro.ini
Shiro 1.1 and earlier
在Web
应用程序中使用
Shiro 1.1
或更早版本的最简单的方法是定义
IniShiroFilter
并指定一个
filter-mapping:
<filter>
<filter-name>ShiroFilter</filter-name>
<filter-class>org.apache.shiro.web.servlet.IniShiroFilter</filter-class>
</filter>
…
<!-- Make sure any request you want accessible to Shiro is filtered. /* catches all -->
<!-- requests. Usually this filter mapping is defined first (before all others) to
-->
<!-- ensure that Shiro works in subsequent filters in the filter chain:
-->
<filter-mapping>
<filter-name>ShiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
|
如果你不想将你的INI
配置放在
/WEB-INF/shiro.ini
或
classpath:shiro.ini
,你可以指定一个自定义的资源位置。添加一个
configPath
的
init-param
,并指定资源位置。
<filter>
<filter-name>ShiroFilter</filter-name>
<filter-class>org.apache.shiro.web.servlet.IniShiroFilter</filter-class>
<init-param>
<param-name>configPath</param-name>
<param-value>/WEB-INF/anotherFile.ini</param-value>
<init-param>
</filter>
|
最后,也可以将你的INI
配置嵌入到
web.xml
中而不使用一个独立的
INI
文件。你可以通过使用
init-param
做到这点,而不是
configPath
:
<filter>
<filter-name>ShiroFilter</filter-name>
<filter-class>org.apache.shiro.web.servlet.IniShiroFilter</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>
# INI Config Here
</param-value>
</init-param>
</filter>
...
|
内嵌配置对于小型的或简单的应用程序通常是很好用的,但是由于以下原因一般把它具体化到一个专用的Shiro.ini
文件中:
l
你可能编辑了许多安全配置,不希望为web.xml
添加版本控制。
l
你可能想从余下的web.xml
配置中分离安全配置。
l
你的安全配置可能变得很大,你想保持web.xml
的苗条并易于阅读。
l
你有个负责的编译系统,相同的shiro
配置可能需要在多个地方被引用。
Web INI配置
除了在配置章节描述的标准的[main]
,
[user]
和
[roles]
项外,你可以在
shiro.ini
文件中指定具有
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"]
|
等号左边是一个与Web
应用程序上下文根目录相关的
Ant
风格的路径表达式。请注意,所有的路径表达式都是相对于你的应用程序的上下文根目录而言的。所有的路径都是相对于
HttpServletRequest.getContextPath()
的值来的。
顺序的重要性!
URL 路径表达式按事先定义好的顺序判断传入的请求,并遵循
FIRST MATCHWINS
这一原则。例如,让我们假设有如下链的定义:
/account/** = ssl, authc
/account/signup = anon
如果传入的请求旨在访问/account/signup/index.html
(所有
'anon'ymous
用户都能访问),那么它将永不会被处理!原因是因为
/account/**
的模式第一个匹配了传入的请求,“短路”了其余的定义。
始终记住基于FIRST MATCH WINS
的原则定义你的过滤器链!
|
等号右边是逗号隔开的过滤器列表,用来执行匹配该路径的请求。它必须符合以下格式:
filter1[optional_config1], filter2[optional_config2], ..., filterN[optional_configN]
l
filterN 是一个定义在
[main]
项中的
filter bean
的名字。
l
[optional_configN]是一个可选的括号内的对特定的路径,特定的过滤器有特定含义的字符串(每个过滤器,每个路径的具体配置!)。若果该过滤器对该
URL
路径并不需要特定的配置,你可以忽略括号,于是
filteNr[]
就变成了
filterN
。
因为过滤器标志符定义了链(又名列表),所以请记住
顺序问题
!请按顺序定义好你的逗号分隔的列表,这样请求就能够流通这个链。
在过滤器链中能够使用的过滤器“池”被定义在[main]
项。在
[main]
项中指派给它们的名字就是在过滤器链定义中使用的名字。例如:
[main]
…
myFilter = com.company.web.some.FilterImplementation
myFilter.property1 = value1
…
[urls]
…
/some/path/** = myFilter
|
分享到:
相关推荐
4、优点:快速上手、全面支持验证、授权、加密和会话、灵活自定义设计、支持web环境、可以无缝集成spring等优点。可以用来用户验证、用户授权、用户session管理、安全加密等 5、基于RBAC五张表:用户表 tb_user、...
包含shirojar包和整合配置官方例子说明,以及jar包。 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的...
SpringMVC整合Shiro,Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。 配置applicationContext-shiro.xml 1. 配置authorizingRealm ...
) JBoss RestEasy 3.0.9.Final ( ) Guice 3.0 ( ) Apache Shiro 1.2.3 ( ) gson 2.2.4 ( ) 乔达时间 2.4 ( ) JUnit 4.10 ( ) Jukito 1.4 ( ) Logback + SLF4J XLogger ( )要求Java 8 Maven 3 应用服务器(Tomcat 9(?...
1、Shiro是Apache下的一个开源项目,我们称之为Apache Shiro。它是一个很易用与Java项目的的安全框架,提供了认证、授权、加密、会话管理,与spring Security 一样都是做一个权限的安全框架,但是与Spring Security ...
整合Apache Oltu 与 Shiro. 提供一个轻量的OAUTH2应用框架。并根据不同的应用场景提供不同的实现(如web场景,移动设备).
apache shiro 是一个安全认证框架,和 spring security 相比,在于他使用了比较简洁易懂的认证和授权方式。其提供的 native-session(即把用户认证后的授权信息保存在其自身提供Session 中)机制,这样就可以和 ...
- Spring Boot 权限认证,包括 Apache Shiro、Spring Security - springboot-cloud - Spring Cloud 入门,包括 Eureka(服务注册与发现)、Config(配置中心)、Hystrix(断路器)、Bus(消息总线) 等
整合Apache Oltu 与 Shiro. 提供一个轻量的OAUTH2应用框架实现.并根据不同的应用场景提供不同的实现(如web场景,移动设备).该项目与spring-oauth-server实现相同的需求与场合. 只是在实现上使用的技术不同(spring-...
为了增强应用程序的安全性,通常会结合使用Apache Shiro,这是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。通过整合SSM框架和Shiro,可以实现对应用程序的简单权限控制。 在`src/main/...
bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> 02 03 <!-- override these for application-specific URLs if you like:--> 04 <!-- ...
JeeSite是在Spring Framework基础上搭建的一个Java基础开发平台,以Spring MVC为模型视图控制器,MyBatis为数据访问层, Apache Shiro为权限授权层,Ehcahe对常用数据进行缓存,Activit为工作流引擎。是JavaEE界的...
比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架...
shiro和struts2的简单整合的项目 包含,用户登录,shiro关联的tag标签的简单使用,
1. 了解基于资源的权限管理方式 2. 权限数据模型 3. 基于url的权限管理(不适应shiro实现权限管理) 4. Shiro实现用户认证 5. Shiro实现用户授权 6. Shiro与企业web整合开发方法
Aurora是一个简单高效的后台管理系统。...安全框架采用时下流行的Apache Shiro,可实现对按钮级别的权限控制;前端页面使用KidAdmin构建,并提供多套配色以供选择。 项目地址:https://gitee.com/hgpt/Aurora
非常完美的spring+springMVC+shiro 完美例子实现权限认证,相信你一定会喜欢,里面有文档说明 简介: Shiro 是一个 Apache Incubator 项目,旨在简化身份验证和授权。是一个很不错的安全框架。...Web.xml配置 ......
org.apache.shiro shiro-spring 1.4.0 org.apache.shiro shiro-ehcache 1.4.0 更新日期2017-11-07 1、项目整合redis存储,shiro可使用redisSession可使用于集群访问. 2、项目增加jwt模式 3、增加默认启动模式为开发...
而且 Shiro 兴起的时代主流应用还是传统的基于 Session 的 Web 网站,并没有过多的考虑目前流行的微服务等应用形式的权限管理需求。导致其并没有提供一套无状态微服务的开箱即用的整合方案。需要在项目层面对 Shiro ...
shiro学习案例整合ssm shiwuzhaoling demo Spring Boot Examples 纯洁的微笑springboot学习demo Douyin-Bot Python 抖音机器人,论如何在抖音上找到漂亮小姐姐? MeiWidgetView 安卓自定义控件 Layx 网页弹框js插件 ...