shiro认证后 却没有执行 doGetAuthorizationInfo

作为一个新手之前一段时间开始使用的shiro,也有分享过一些shiro框架整合springmvc的内容。不过最近遇到一个问题困扰了我大半天,就是一个配置完整的shiro+springmvc项目只做了认证(doGetAuthenticationInfo)没做授权(doGetAuthorizationInfo),spring-shiro.xml文件如下:

[html]  view plain  copy
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">  
  5.   
  6.       
  7.     <bean id="sessionManager"  
  8.           class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">  
  9.         <property name="globalSessionTimeout" value="1800000"/>  
  10.         <property name="deleteInvalidSessions" value="true"/>  
  11.         <property name="sessionValidationSchedulerEnabled" value="true" />  
  12.         <property name="sessionValidationScheduler" ref="sessionValidationScheduler" />  
  13.         <property name="sessionDAO" ref="sessionDAO" />  
  14.         <property name="sessionIdCookieEnabled" value="true" />  
  15.         <property name="sessionIdCookie" ref="sessionIdCookie" />  
  16.         <property name="cacheManager" ref="cacheManager" />  
  17.     bean>  
  18.   
  19.     <bean id="sessionDAO" class="org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO">  
  20.         <property name="sessionIdGenerator" ref="sessionIdGenerator" />  
  21.         <property name="activeSessionsCacheName" value="shiro-activeSessionCache" />  
  22.     bean>  
  23.   
  24.     <bean id="sessionIdGenerator" class="org.apache.shiro.session.mgt.eis.JavaUuidSessionIdGenerator"/>  
  25.   
  26.       
  27.     <bean id="sessionValidationScheduler" class="org.apache.shiro.session.mgt.ExecutorServiceSessionValidationScheduler">  
  28.         <property name="interval" value="1800000" />  
  29.         <property name="sessionManager" ref="sessionManager" />  
  30.     bean>  
  31.   
  32.       
  33.     <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">  
  34.           
  35.           
  36.         <property name="realm" ref="myRealm"/>  
  37.         <property name="sessionManager" ref="sessionManager"/>  
  38.         <property name="cacheManager" ref="cacheManager"/>  
  39.         <property name="rememberMeManager" ref="rememberMeManager" />  
  40.     bean>  
  41.   
  42.       
  43.     <bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">  
  44.         <property name="cacheManagerConfigFile" value="classpath:/applicationContext/ehcache-shiro.xml"/>  
  45.     bean>  
  46.   
  47.       
  48.     <bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager">  
  49.       
  50.     <property name="cipherKey"  
  51.     value="#{T(org.apache.shiro.codec.Base64).decode('3AvVhmFLUs0KTA3Kprsdag==')}"/>  
  52.     <property name="cookie" ref="rememberMeCookie"/>  
  53. bean>  
  54.   
  55.     <bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie" >  
  56.         <constructor-arg value="sid" />  
  57.         <property name="httpOnly" value="true" />  
  58.         <property name="maxAge" value="-1" />  
  59.     bean>  
  60.     <bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie">  
  61.         <constructor-arg value="rememberMe"/>  
  62.         <property name="httpOnly" value="true"/>  
  63.         <property name="maxAge" value="604800"/>   
  64.     bean>  
  65.   
  66.     <bean id="myRealm" class="com.clear.cnemc.realm.CustomRealm">  
  67.           
  68.           
  69.         <property name="cachingEnabled" value="true"/>  
  70.           
  71.         <property name="authenticationCachingEnabled" value="true"/>  
  72.           
  73.         <property name="authenticationCacheName" value="authenticationCache"/>  
  74.           
  75.         <property name="authorizationCachingEnabled" value="true"/>  
  76.           
  77.         <property name="authorizationCacheName" value="authorizationCache"/>  
  78.     bean>  
  79.     <bean id="VcodeControlFilter" class="com.clear.api.web.system.VcodeControlFilter" />  
  80.     <bean id="KickoutSessionControlFilter" class="com.clear.api.web.system.KickoutSessionControlFilter" >  
  81.         <property name="sessionManager" ref="sessionManager"/>  
  82.         <property name="cacheManager" ref="cacheManager"/>  
  83.         <property name="kickoutAfter" value="false"/>  
  84.         <property name="maxSession" value="1"/>  
  85.         <property name="kickoutUrl" value="/login.jsp?kickout=1"/>  
  86.     bean>   
  87.   
  88.       
  89.     <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>  
  90.   
  91.     <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">  
  92.         <property name="securityManager" ref="securityManager"/>  
  93.         <property name="loginUrl" value="/login.jsp"/>  
  94.         <property name="unauthorizedUrl" value="/jsp/unauthorized.jsp"/>  
  95.         <property name="filterChainDefinitions">  
  96.             <value>  
  97.                 /unauthorized.jsp = anon  
  98.                 /login.jsp = anon,kscf  
  99.                   
  100.                 /jsp/** = authc,kscf  
  101.                 /sys/verificationCode = vcode  
  102.                 /resources/** = anon  
  103.                 /jsp/home.jsp = anon  
  104.             value>  
  105.         property>  
  106.         <property name="filters">  
  107.             <map>  
  108.                 <entry key="kscf" value-ref="KickoutSessionControlFilter" />  
  109.                 <entry key="vcode" value-ref="VcodeControlFilter" />  
  110.                 <entry key="IsLoginAccessControlFilter" value-ref="IsLoginAccessControlFilter" /> -->  
  111.             map>  
  112.         property>  
  113.     bean>  
  114. beans>  
那么我的是什么问题呢? 我先百度了一下,发现全都是说要在springmvc的配置文件(注意我展示的是shiro整合springmvc的配置文件)中添加
[html]  view plain  copy
  1. <aop:config proxy-target-class="true"/>  

但是从上面看出我并没有使用注解方式,而是直接在配置文件中绑定。所以可以直接pass,但是怎么找基本都是一个答案,这种不管什么都转载的真的很烦。不过最终还是找出了原因——是因为我的controller处理以后只返回了一个json然后就没有了,让我们结合下面的配置一起讲

[html]  view plain  copy
  1. <property name="filterChainDefinitions">  
  2.            <value>  
  3.                /unauthorized.jsp = anon  
  4.                /login.jsp = anon,kscf  
  5.                  
  6.                /jsp/** = authc,kscf  
  7.                /sys/verificationCode = vcode  
  8.                /resources/** = anon  
  9.                /jsp/home.jsp = anon  
  10.            value>  
  11.        property>  
这里是默认的过滤器,其实授权是在地址变化的时候才会进行的行为,如果之前没有授权缓存,那么每当地址跳转时,就会调用doGetAuthorizationInfo,有缓存才去缓存,然后拦截器过滤没有权限的用户。所以,我就是因为没有跳转才没执行doGetAuthorizationInfo的。

对了,一开始我加上了跳转也没好,而是新建了也realm把之前一个的内容copy过去,然后就好了。这是我的编程工具的问题

你可能感兴趣的:(shiro)