为了账号安全,请及时绑定邮箱和手机立即绑定

shiro学习笔记--环境搭建

标签:
Java
第一步: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

第六步:运行tomcat在地址栏中输入其它地址,看是否会被自动拦截回默认地址。

到此,项目框架搭建完成,后续的内容在学习后会及时跟大家一起探讨。

点击查看更多内容
37人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消