大家是如何解决登录后,点击浏览器的返回按钮又回到登录页面的问题
发布于 7 年前 作者 zhujunel 7172 次浏览 来自 问答

新手,用express+ejs做了个项目,点击需要登录权限的页面跳到登录页面(res.redirect(/login?redir=${req.originalUrl});),登录成功后,回到之前的页面,当点击浏览器的返回按钮或者执行(history.go(-1))的时候,又回到登录页面,再次点击回到未登录状态的上上个页面,刷新下就好了。

6 回复
  • , - 对吗你都说了,登陆成功。
    你后台会写一个session存数据库或者redis或者其他地方吧。
    你可以使用本地存储 cookie、localStorage本地存储,存储用户信息,接在在每次进入页面的时候执行脚本,判断有否存在用户信息,存在在重定向回去,不存在就啥都不干!
    其实把你后台可以做限制的,登陆过后的用户不允许注册、登陆,尚未登陆的用户不允许退出。

@zhang962976642 第一次写express+ejs项目,没有用到session存数据库或者redis,目前就是把sid存到cookie中了,“接在在每次进入页面的时候执行脚本,判断有否存在用户信息,存在在重定向回去”,这个每次进入页面执行脚本是写在哪里呢?点击返回没有走后台的路由router.get(’/’),是在ejs模板里面判断吗?

  1. 你可以在在 login.ejs 、 register.ejs中写一段js脚本,判断用户是否登陆并存入本地存储中,通过前端拦截是否跳转。
  2. 如果后台限制请这么做比如:
  // 登陆路由
  module.exports = login(req,res,next){
     var username = req.body.username;
     var password = req.body.password;
	 /*  验证User;
	 	 User.findOne();
	*/
	// ps 这里req.user存储用户登陆信息,你也可以存token等。
	req.user.session = username;
  };
  // 是否登陆验证
 module.exports = isLogin(req,res,next){
  if(!req || !res) return false;
  if(!req.user.session){
    // 未登陆
	return next();
  }else{
  	// 已登录
	return res.redirect('/');
  };
};
// 路由 Router
var isLogin = require('./isLogin');
var login = require('./login');
app.get('/login', isLogin, login );

@zhang962976642 谢谢,学习了,试试

使用参数,加一个refer

回到顶部