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

后台管理系统一般都会校验权限,当用户未登录,或者登录后长时间未操作导致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中问号后面如果有多个参数不会丢失。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现这个功能,你可以在后端代码中对未登录用户进行拦截,并将其重定向到登录页面。具体方法可以使用中间件来实现,在 Flask 中,你可以使用 Flask-Login 插件提供的 login_required 装饰器来实现拦截未登录用户的功能。 以下是一个简单的 Flask-Login 实现方式: ```python from flask import redirect, url_for from flask_login import login_required @app.before_request @login_required def before_request(): pass ``` 在这个例子中,我们使用了 Flask 的 before_request 钩子函数,该函数会在每个请求到达应用程序之前被调用。同时,我们使用了 Flask-Login 插件提供的 login_required 装饰器,该装饰器会检查用户是否已经登录,如果未登录,则会将用户重定向到登录页面。 你需要在 Flask 中配置登录视图和登录路由,以便用户可以进行登录操作。在登录视图中,你需要设置用户的登录状态,例如: ```python from flask import render_template, request, redirect, url_for from flask_login import login_user from models import User @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] user = User.query.filter_by(username=username).first() if user is not None and user.verify_password(password): login_user(user) # 设置用户的登录状态 return redirect(url_for('index')) flash('Invalid username or password.') return render_template('login.html') ``` 在这个例子中,我们从表单中获取用户名和密码,然后使用查询语句从数据库中查找用户。如果用户存在且密码验证通过,我们使用 Flask-Login 提供的 login_user 函数设置用户的登录状态。 最后,你需要在 Flask 中配置登录页面视图和路由,例如: ```python from flask import render_template @app.route('/login') def login(): return render_template('login.html') ``` 在这个例子中,我们使用 Flask 提供的 render_template 函数来渲染登录页面模板。 这样,未登录用户访问管理系统的任何页面时,都会被重定向到登录页面,直到用户进行登录操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值