大家是如何解决登录后,点击浏览器的返回按钮又回到登录页面的问题
新手,用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模板里面判断吗?
- 你可以在在 login.ejs 、 register.ejs中写一段js脚本,判断用户是否登陆并存入本地存储中,通过前端拦截是否跳转。
- 如果后台限制请这么做比如:
// 登陆路由
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