shiro 新手学习(1)

1.配置shiro的pom依赖web

<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-quartz</artifactId>
    <version>1.2.4</version>
</dependency>spring

<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-core</artifactId>
    <version>1.2.4</version>
    <exclusions>
        <exclusion>
            <artifactId>slf4j-api</artifactId>
            <groupId>org.slf4j</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-web</artifactId>
    <version>1.2.4</version>
</dependency>
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-spring</artifactId>
    <version>1.2.4</version>
</dependency>
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-ehcache</artifactId>
    <version>1.2.4</version>
</dependency>apache

2.在web.xml中添加shiro的配置文件api

<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> 
<listener> 
    <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class> 
</listener> 
<filter>
    <filter-name>ShiroFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <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>

3.在系统配置文件中添加shiro的配置文件,文件名为shiro.ini,spring-shiro.xml,  分别配置shiro的基本配置和对与spring的依赖。安全

 

spring-shiro.xml主要是为了解决在自定的authrealm中注入service或者dao层接口,核心配置以下:session

<bean id="ShiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> 
    <!-- 注入安全管理器 --> 
    <property name="securityManager" ref="securityManager"></property> 
</bean> 
<bean id="sessionManager" class="org.apache.shiro.session.mgt.DefaultSessionManager"> </bean> 
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> 
    <!-- 注入realm --> 
    <property name="realm" ref="myAuthorizingRealm"></property> 
</bean> 
<bean id="myAuthorizingRealm" class="com.xxx.xxxx.ext.shiro.config.MyAuthorizingRealm"></bean> 
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/> 
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor">
    <!-- 指定强制使用cglib为action建立代理对象 --> 
    <property name="proxyTargetClass" value="true"></property> 
</bean>

4.重构com.xxx.xxxx.ext.shiro.config.MyAuthorizingRealm中的2个方法,此时注入的service或者dao就可使用了。realm的实现原理是利用filter,可是filter的加载级别优先于spring bean的级别,全部须要spring-shiro.xmlapp

相关文章
相关标签/搜索