用户登录后重定向到原来访问页面

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaozaq/article/details/84333094

后台管理系统一般都会校验权限,当用户未登录,或者登录后长时间未操作导致session失效,权限校验会导致用户重定向到登录页面。此时希望用户在登录后返回原来的页面。

具体实现方法如下:
1.权限校验重定向到登录页面时,在其重定向的url后添加一个参数保留原来页面的url。
可以自己随意定义,这里我定义的是toUrl。
代码示例:

//System.out.println("未登录,未通过验证! ");
//没有权限则直接重定向到登录页面
String toUrl = request.getRequestURL().append("?").append(request.getQueryString()).toString(); 
try {
	toUrl = URLEncoder.encode(toUrl,"UTF-8");
} catch (UnsupportedEncodingException e) {
	e.printStackTrace();
}
inv.getController().redirect("/xpl/admin/login"+"?toUrl=" + toUrl);  

2.在登录页面使用ajax登录。登录成功后,获取url参数toUrl。然后对其进行解码。

$.post("/xpl/admin/login/userLogin",obj.field,function(data){
    		if(data.code == 0){
    			//登入成功的提示与跳转
    	          layer.msg('登入成功', {
    	            offset: '15px'
    	            ,icon: 1
    	            ,time: 500
    	          }, function(){
    	          	var toUrl = getQueryString("toUrl");
    	          	toUrl = toUrl || '/xpl/admin/main'; //如果没有toUrl参数,则默认进入后台主页面
    	          	toUrl = decodeURIComponent(toUrl);
    	            location.href = toUrl;
    	          });
  	        }else{
  	        	layer.msg(data.msg);
  	        }
    	});

打完收工。
ps:
1.getQueryString(“toUrl”)是获取url参数。
具体实现:

/***
 * 获取url参数
 */
function getQueryString(name) { 
	var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); 
	var r = window.location.search.substr(1).match(reg); 
	if (r != null) 
		return decodeURI(r[2]);
	return null; 
}

2.url编码与解码:
java中使用URLEncoder.encode(toUrl,“UTF-8”)编码,对应js中使用decodeURIComponent(toUrl)。
这样才能保证url中问号后面如果有多个参数不会丢失。

猜你喜欢

转载自blog.csdn.net/xiaozaq/article/details/84333094