Dear admin, 

In web context, I hope to get a WebDelegatingSubject, but always 
DelegatingSubject.
my config:
<bean id="shiroFilter" 
class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">  
<property name="securityManager" ref="securityManager" />  
<property name="loginUrl" value="/common/login" /> 
<property name="successUrl" value="/mainhome" />
<property name="unauthorizedUrl" value="/loginfail" />
<property name="filterChainDefinitions">   
<value>
/** = anon
</value>  
</property> 
</bean>  

<bean id="shiroSessionListener" 
class="pccw.common.bean.ShiroSessionListener"></bean> 
<bean id="shiroRealm" class="pccw.common.service.ShiroService"/>
<bean id="securityManager" 
class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">  
<property name="sessionManager" ref="sessionManager" />
<property name="realm" ref="shiroRealm" />  
</bean>
<bean id="sessionManager" 
class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
    <property name="sessionListeners" ref="shiroSessionListener" />    
</bean>

 <bean id="lifecycleBeanPostProcessor" 
class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
<bean id="secureRemoteInvocationExecutor" 
class="org.apache.shiro.spring.remoting.SecureRemoteInvocationExecutor">
    <property name="securityManager" ref="securityManager"/>
</bean>
<bean 
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="staticMethod" 
value="org.apache.shiro.SecurityUtils.setSecurityManager"/>
<property name="arguments" ref="securityManager"/>
</bean>

pccw.common.bean.ShiroSessionListener:
public class ShiroSessionListener extends SessionListenerAdapter {
@Override
public void onExpiration(Session session) {
super.onExpiration(session);
}

@Override
public void onStart(Session session) {
super.onStart(session);
Subject subject = SecurityUtils.getSubject(); //subject is DelegatingSubject, I 
think it should be WebDelegatingSubject, why? miss DefaultWebSubjectContext?
System.out.println(WebUtils.isWeb(subject)); // is false , I think is is true

//but the follow "ws" is WebDelegatingSubject not DelegatingSubject, I think 
is's ok!
Subject ws = SecurityUtils.getSecurityManager().createSubject(new 
DefaultWebSubjectContext());
System.err.println("ws type: " + s.getClass().getName() );
}

@Override
public void onStop(Session session) {
super.onStop(session);
}

Sorry for my bad English! I am not sure that it is a bug or my mistake. please 
help me. 
Thank you very much!

Best Regards.

MA Xinglin
_____________________________
Tel : (8620) 3832 0123 - 139
E-mail : [email protected] 

Reply via email to