ssm框架+前端ajax登录,解决登录后跳转回原链接问题

本文介绍了在Spring+Struts2+MyBatis(SSM)框架下,结合前端Ajax登录,如何处理用户登录后跳转回原页面的问题。当session失效,用户重新登录时,系统会记录并恢复上次访问的页面。同时,文章讨论了登录后进入错误URL或Ajax请求的情况及其解决方案。

当前环境:

      spring做全链接拦截,在拦截器中进行登录验证,登录方法在前端触发使用的是ajax,登录方式调用成功后,将在session中保存登录的UUID,登录成功后的处理直接使用页面跳转到主页(window.location.href)。

出现的变更:

      如果页面长时间没有访问,session失效后,之前打开的页面上的任何业务操作都将会跳转到登录页面,登录后会跳转到主页。

      在重新登录后客户希望回到原来的页面。

处理方案:

     1、在拦截器中,当登录的uuid为空的时候,记录下访问的全路径保存到session中:

String getFullURL(HttpServletRequest request) {
         StringBuffer url = request.getRequestURL();
         if (request.getQueryString() != null) {
          url.append("?");
          url.append(request.getQueryString());
         }
         return url.toString();
        }


      2、当正常跳转时,清除保存到session中的路径,由于程序逻辑中,在登录成功后会直接在页面上跳转,故而在登录成功后的uuid不为空时,保存的全路径已经被使用了。

            或者在退出的动作中删除session中的路径,如此保证了,正常登录时,能跳转到主页上。

      3、在登录成功后,如果session中保存的路径为空,那么直接将首页链接返回到前端,否则获取session中保存的路径,直接作为ajax的data返回到页面,页面获取此路径后,直接跳转到此路径;

引申问题:

如果在登录失效后输入的URL是错误的,那么登录后将会继续打开错误的URL,特别是当URL为ajax方法调用的连接时,页面上将返回action的输出的内容。这种情况应该怎么处理?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值