gpt4 book ai didi

session-timeout - Shiro 过期 session 处理

转载 作者:行者123 更新时间:2023-12-04 08:27:12 25 4
gpt4 key购买 nike

我的独立应用程序使用 四郎安全管理 .我遇到了过期 session 的问题。如果用户 session 过期并且当我尝试重新登录用户时,我会收到以下异常。
有人可以帮忙吗?

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)

I am using spring to configure shiro

<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>

最佳答案

我在使用远程 ejb 进行身份验证时遇到了同样的问题。

作为解决方法,第一次登录尝试是在捕获 UnknownSessionException 的 try/catch 块中。 .
一个 Subject然后从头开始构建以再次登录用户。

UsernamePasswordToken token = new UsernamePasswordToken(username, password);
try {
subject.login(token);
} catch (UnknownSessionException use) {
subject = new Subject.Builder().buildSubject();
subject.login(token);
session = subject.getSession(true);
}

关于session-timeout - Shiro 过期 session 处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13840678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com