2012-12-12 25 views
8

私のスタンドアロンアプリケーションはをShiroのセキュリティ管理に使用しています。期限切れのセッションで問題が発生しました。ユーザーセッションの有効期限が切れた場合、ユーザーをログオンしようとすると、次の例外が発生します。 誰かが助けてくれますか?Shiroはセッション処理を期限切れにしました

 
org.apache.shiro.session.UnknownSessionException: There is no session with id [d32af383-5f26-463f-a2f0-58a0e82c7890] 
at org.apache.shiro.session.mgt.eis.AbstractSessionDAO.readSession(AbstractSessionDAO.java:170) 
at org.apache.shiro.session.mgt.DefaultSessionManager.retrieveSessionFromDataSource(DefaultSessionManager.java:236) 
at org.apache.shiro.session.mgt.DefaultSessionManager.retrieveSession(DefaultSessionManager.java:222) 
at org.apache.shiro.session.mgt.AbstractValidatingSessionManager.doGetSession(AbstractValidatingSessionManager.java:118) 
at org.apache.shiro.session.mgt.AbstractNativeSessionManager.lookupSession(AbstractNativeSessionManager.java:105) 
at org.apache.shiro.session.mgt.AbstractNativeSessionManager.lookupRequiredSession(AbstractNativeSessionManager.java:109) 
at org.apache.shiro.session.mgt.AbstractNativeSessionManager.stop(AbstractNativeSessionManager.java:238) 
at org.apache.shiro.session.mgt.DelegatingSession.stop(DelegatingSession.java:127) 
at org.apache.shiro.session.ProxiedSession.stop(ProxiedSession.java:107) 
at org.apache.shiro.subject.support.DelegatingSubject$StoppingAwareProxiedSession.stop(DelegatingSubject.java:419) 
at org.apache.shiro.session.ProxiedSession.stop(ProxiedSession.java:107) 
at org.apache.shiro.subject.support.DelegatingSubject$StoppingAwareProxiedSession.stop(DelegatingSubject.java:419) 

私は認証のためにリモートEJBを使用している間、私は同じ問題に直面してい史郎

<bean id="securityManager" class="org.apache.shiro.mgt.DefaultSecurityManager"> 
    <property name="realm" ref="myRealm"/> 
    <property name="sessionManager.globalSessionTimeout" value="3600000" /> 
</bean> 
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/> 
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
    <property name="staticMethod" value="org.apache.shiro.SecurityUtils.setSecurityManager"/> 
    <property name="arguments" ref="securityManager"/> 
</bean> 

答えて

4

を設定するには、スプリングを使用しています。

回避策として、最初のログイン試行は、UnknownSessionExceptionを捕まえるtry/catchブロックにあります。 Subjectは、最初からユーザーにログインするために作成されます。

+0

私はこの回避策を試しましたが、うまくいかないようです。問題は優先されます。 –

+0

@Amar Sosa:shiro設定と関連するshiroコードを投稿できますか? – zellus

+0

私は史郎 を設定するには、スプリングを使用しています。<豆ID = "SecurityManagerの" クラス= "org.apache.shiro.mgt.DefaultSecurityManager"> \t <プロパティ名= "王国" REF = "MYREALM" /> \t <プロパティNAME = "sessionManager.globalSessionTimeout" 値= "3600000" /> <ビーンID = "lifecycleBeanPostProcessor" クラス= "org.apache.shiro.spring.LifecycleBeanPostProcessor" /> \t

関連する問題