先说用的是spring的mvc。
功能是这样的:现在用户在页面A, 然后点了一个连接要进入页面B,但进入页面B之前需要先登录,在用户登录完后要页面跳转到页面B,请问这个功能要怎么实现?
查了下网上的资料:
一个方案是用getHeader("referer"),但是这个只能获得页面的A的连接,所以不行。
另一个方案是在拦截器中将页面B的连接保存在session中,在用户登录后从session中取出页面B的连接,然后跳转到页面B。这样做的问题是:
1.在第一次点击页面B连接的时候,如果需要传递参数,并且不是url传参而是其他类型的传参(比如表单传参),在用户登录后跳转到页面B的时候,怎样把参数也过去(说白就是怎样保存第一次发链接时的参数)。
2.使用ajax的时候也会出现需要登录时候,是否要在所有的ajax连接上加一个参数来区分它不是普通的连接,然后在返回到javascript中单独做处理。
求大虾来解决问题。谢谢!!!
功能是这样的:现在用户在页面A, 然后点了一个连接要进入页面B,但进入页面B之前需要先登录,在用户登录完后要页面跳转到页面B,请问这个功能要怎么实现?
查了下网上的资料:
一个方案是用getHeader("referer"),但是这个只能获得页面的A的连接,所以不行。
另一个方案是在拦截器中将页面B的连接保存在session中,在用户登录后从session中取出页面B的连接,然后跳转到页面B。这样做的问题是:
1.在第一次点击页面B连接的时候,如果需要传递参数,并且不是url传参而是其他类型的传参(比如表单传参),在用户登录后跳转到页面B的时候,怎样把参数也过去(说白就是怎样保存第一次发链接时的参数)。
2.使用ajax的时候也会出现需要登录时候,是否要在所有的ajax连接上加一个参数来区分它不是普通的连接,然后在返回到javascript中单独做处理。
求大虾来解决问题。谢谢!!!
2.登录信息放session里
登录信息肯定是放在session中,我说的问题是在为登录或session过期后跳转到登录页的时候。
里面放input hidden放参数 是放在哪个表单中?还有第一次点页面B连接的时候,在哪里接参数,如果要接收参数再传到页面B,岂不是要把所有连接的参数都写上面?或者使用request.getParameterValues()?放表单参数? 那传文件的时候咋办?
function showXXXXX(){
var login = getCookie('XXX');
if(login == null || login == ''){
window.location.href="http://www.login.com/login.do?returnURL=http://目标页面";
}else{
直接window.location.href 目标
return false;
}
}
function toLogin(){
top.location.href="login.jsp?returnTo=" + encodeURIComponent(document.URL);
}
需要做登录验证的页面就引入这个函数,在那页面里判断是否登录,如果没登录就调用这个函数,登录成功给以后,获取returnTo的值,有值就去对应页面,没值就去默认页面。
其实CSDN也有这功能,你可以注销了,然后去CSDN下载一个东西,系统会把你踢到登录页面,你仔细看下这个页面的地址栏
可是我觉得还是解决不了这个问题,我觉得处理连接之类的东西都要放在后台,因为很多连接不一定是从页面上点过去的,也有些是从浏览器地址栏直接进入的,这样的请求就没有javascript做限制,而且比如一些表单的请求,光有一个连接是不够的,还需要有响应的参数。所以我觉得各种处理是要放到后台的。
不过你要吧B的路径,传给Login.jsp,然后登录成功后,再跳转回这个B路径。