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]