joh*_*ith 11 javascript authentication node.js passport.js
我有一个简单的Web应用程序,它具有登录屏幕和活动页面,只有在用户提供了有效凭据时才能访问该页面.假设用户使用有效凭据点击登录并重新定向到活动页面.现在用户没有点击退出,而是他/她只需点击浏览器的后退按钮并返回登录页面.这种行为显然是不直观的,我会假设当用户登录并且他/她点击后退按钮以保持在同一页面上而不返回登录页面.
function loginUser(req, res) {
if (req.session.auth) // if user is still authenticated
{
res.redirect('/activity');
}
res.render('login');
}
Run Code Online (Sandbox Code Playgroud)
这是我目前使用的一种简单方法,总是将用户重定向回活动页面,但是我发现这是一种资源浪费的方法,因为引入了不需要的重定向.我的问题是,这是实现上述行为的标准和最简洁的方法还是有更好的机制?我使用护照进行身份验证和存储jwt令牌.
编辑:重新迭代上述解决方案只有在启用了浏览器no-cache时才有效,相反,由于浏览器缓存了页面,因此甚至没有调用登录路由的控制器.我正在寻找更强大的东西.我认为将浏览器硬编码为不在生产环境中缓存页面是不错的做法.
(大多数)现代浏览器的“功能”之一是单击后退按钮会将您导航回该页面加载时的状态。除非您在导航到登录状态之前动态更新登录页面,否则您将获得这种体验。
我建议的是,在登录页面上进行身份验证后,不要立即将用户重定向到登录状态,而是更新登录页面以指示用户现在已登录(例如,如果您有头像/个人资料图标)在右上角,使用 .js 更改其外观以指示用户已登录)。
更改登录视图的状态后,导航到适当的内容视图(使用元重定向可能是最合适的,但您可以按照自己的喜好进行操作)。
您可以假设,因为用户单击了后退按钮,他们可能是有意这样做的。该解决方案确保尊重用户对后退按钮行为的期望,而不是通过使用 js 检测 cookie 并重新导航来强制重定向 - 这会导致前向/后向重定向循环(这非常令人沮丧!)
虽然 StackOverflow 实际上并没有做您想要做的事情,但这里有一个示例,说明您可以/login在离开之前使用 .js 进行动态更新:
| 归档时间: |
|
| 查看次数: |
898 次 |
| 最近记录: |