shiro +springmvc+freemarker session问题处理 shiro无法记录登陆前页面问题

调试shiro 处理登陆后页面跳转问题时,页面总是无法跳转到之前访问的页面去,查看配置,没有问题。

经查看 登陆前已经保存了请求,但是登陆后获取却为空,经查看登陆前后的sessionid 不一致。

shiro 配置如下:

<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="frontsystemAuthorizingRealm" />
<property name="cacheManager" ref="shiroCacheManager" />
</bean>

每次请求sessionid应该一致,但是却发现每次访问sessionid都不一样,一个浏览器一个窗口的情况

最后发现,原来代码中多做了用户退出操作。

虽然删了多余的用户退出,还是无法记录之前访问的页面,最后发现以下shiro 源码:

public static SavedRequest getAndClearSavedRequest(ServletRequest request) {
        SavedRequest savedRequest = getSavedRequest(request);
        if (savedRequest != null) {
            Subject subject = SecurityUtils.getSubject();
            Session session = subject.getSession();
            session.removeAttribute(SAVED_REQUEST_KEY);
        }
        return savedRequest;

该方法在一次请求中不能重复调用。


另外:使用org.apache.shiro.web.session.mgt.DefaultWebSessionManager

却出现sessionid 不存在异常

经查看是 freemarker 访问标签时调用的session 不存在导致,初步解释,freemarker 和DefaultWebSessionManager 存在兼容性问题


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值