第一步:maven环境下的web项目,在其中添加spring-MVC、shiro和ehcaceh的支持
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-all</artifactId>
<version>1.2.5</version>
</dependency>
<!--缓存-->
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.10.3</version>
</dependency>
第二步:在web.xml中加入shiro的过滤器代理(ShiroFilterProxy)
*此处要特别注意,过滤路径必需为"/",而spring-MVC的DispatcherServlet需要过滤的路径为:“/”,切记!!!至于为什么,看这里链接描述**
<!-- 其中spring-MVC的配置省略了,之前写过很多都有,可以翻看我之前写过的手记。-->
<servlet>
<servlet-name>SpringDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!-- 此处非常重要,作用是定义xml的文件位置,param-name不能修改 -->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/servlet/spring-*.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- mapping为必写项目 -->
<servlet-mapping>
<servlet-name>SpringDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<filter>
<filter-name>shiroFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<!-- 此处必需写成"/*",如果只写"/" ,过滤器没有作用-->
<url-pattern>/*</url-pattern>
</filter-mapping>
第三步:在applicationContext.xml中配置shiro
特别注意,此处必需配置在applicationContext.xml中,不能配置到DispatcherServlet下,否则会出现找不到shiroFilter错误!!!
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="realm"></property>
<property name="cacheManager" ref="cacheManager"></property>
</bean>
<bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
<property name="cacheManagerConfigFile" value="classpath:cache/ehcache.xml"></property>
</bean>
<!-- 3.实现自定义realm -->
<bean id="realm" class="com.ming.shiro.realms.TestShro"></bean>
<!-- 4.bean生命周期 -->
<bean id="targetFilterLifecycle" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />
<!-- 5.启用IOC注解 -->
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="targetFilterLifecycle"> </bean>
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
<property name="securityManager" ref="securityManager"></property>
</bean>
<!--
6.配置shiroFilter
6.1-ID必需要和web.xml中配置的Filter名称相同。
-->
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager"></property>
<property name="loginUrl" value="login.jsp"></property>
<property name="successUrl" value="list.jsp"></property>
<property name="unauthorizedUrl" value="unauthorized.jsp"></property>
<!-- 配置页面的访问权限 -->
<property name="filterChainDefinitions">
<value>
<!--anno未授权时可以访问的位置-->
/login.jsp=anon
<!--authc授权后可以访问的-->
/list = authc
/** = authc
</value>
</property>
</bean>
第四步:复制一个ehcache的配置文件和写一个空的Realm实现org.apache.shiro.realm.Realm接口,此realm没有实际作用只是用来搭建项目,实现跳转拦截。
package com.ming.shiro.realms;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.realm.Realm;
public class TestShro implements Realm {
@Override
public AuthenticationInfo getAuthenticationInfo(AuthenticationToken arg0) throws AuthenticationException {
// TODO 自动生成的方法存根
return null;
}
@Override
public String getName() {
// TODO 自动生成的方法存根
return null;
}
@Override
public boolean supports(AuthenticationToken arg0) {
// TODO 自动生成的方法存根
return false;
}
}
第五步:加入几个jsp页面
login.jsp
list.jsp
到此,项目框架搭建完成,后续的内容在学习后会及时跟大家一起探讨。
点击查看更多内容
37人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦