shiro与Web的集成使用
一个基础的shiro应用
依赖
要想在webapp中使用shiro,必须要导入servlet和shiro-web的依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>1.2.2</version>
</dependency>
shiroFilter入口
第一种配置方法用于1.1及以前版本,在web.xml中写入:
<filter>
<filter-name>iniShiroFilter</filter-name>
<filter-class>org.apache.shiro.web.servlet.IniShiroFilter</filter-class>
<init-param>
<param-name>configPath</param-name>
<param-value>classpath:shiro.ini</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>iniShiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
第二种是将sgiro.ini的内容内嵌到web.xml中:
<init-param>
<param-name>config</param-name>
<param-value>
ini 配置文件贴在这
</param-value>
</init-param>
第三种方法适用于1.2及以后版本,因为引入了Environment/WebEnvironment概念,shirofilter会自动找到Environment然后获取响应的依赖:
<listener>
<listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
</listener>
在第三种方法的基础上加入如下配置信息修改默认文件加载路径:
<context-param>
<param-name>shiroEnvironmentClass</param-name>
<param-value>org.apache.shiro.web.env.IniWebEnvironment</param-value>
</context-param>
<context-param>
<param-name>shiroConfigLocations</param-name>
<param-value>classpath:shiro.ini</param-value>
</context-param>
shiro.ini在Webapp下的不同之处
先来看一个标准的ini配置:
[main]
#默认是/login.jsp
authc.loginUrl=/login
roles.unauthorizedUrl=/unauthorized
perms.unauthorizedUrl=/unauthorized
[users]
zhang=123,admin
wang=123
[roles]
admin=user:*,menu:*
[urls]
/login=anon
/unauthorized=anon