如何使用 Express 重新加载页面?

Posted

技术标签:

【中文标题】如何使用 Express 重新加载页面?【英文标题】:How to reload the page using Express? 【发布时间】:2020-01-04 01:42:06 【问题描述】:

我正在处理我网站的注销部分,我正在使用 JWT 进行身份验证并使用 cookie 将 JWT 发送给客户端。

为了注销,我传递了一些具有相同令牌名称的虚拟令牌值,以便它覆盖前一个令牌。但是当我退出门户网站时,我仍然可以访问我的仪表板。注销功能存在一些故障。我想这是由于浏览器缓存。

我有几个关于 Express 的问题。

    是否有任何方法可以使用 Express 重新加载当前页面并同时删除浏览器缓存?

    我需要在用户注销后禁用chrome的浏览器转发选项,如何使用express实现?

    当用户尝试点击“/login”或“/signup”路由时,如何将用户重定向到他的仪表板?我正在使用 JWT 身份验证进行登录

提前致谢

【问题讨论】:

【参考方案1】:

有什么方法可以使用 Express 重新加载当前页面并同时删除浏览器缓存?

服务器无法自行告诉浏览器该做什么。浏览器必须启动通信,然后对该通信采取行动。

您可以随时使用带有window.location.reload(true)javascript 让浏览器中的网页重新加载自己的页面。如果您希望服务器告知网页 Javascript 何时执行此操作,它可以向服务器发送常规 Ajax 调用,并根据响应决定何时重新加载页面。或者,它可以与服务器建立 webSocket 连接,并且服务器可以向网页发送一些数据,当网页接收到该数据时,它会看到它应该重新加载其页面。

如果您告诉我们真正的问题出在哪里,我们可以为您提供更好的帮助。网页可以使用 Javascript 和/或 webSocket 连接来动态更新自己,而不是一直重新加载。这是一个更现代的设计。

用户退出后我需要禁用chrome的浏览器转发选项,如何使用express实现?

这里讨论了禁用前进按钮:html5 history disabling forward button。您可能会发现这是一种蛮力方法(它涉及摆脱浏览器历史记录),并且可能有更好的方法来解决您要解决的任何实际问题。听起来您可能还想管理浏览器缓存过期。

当用户尝试点击“/login”或“/signup”路径时,如何将用户重定向到他的仪表板?我正在使用 JWT 身份验证进行登录

当您在 Express 中检测到来自已登录用户的“/login”或“/signup”请求时,您只需从服务器回复res.redirect("/dashboard")。仅供参考,有很多关于这是否是正确的用户体验的问题。已经登录后进入“/login”或“/signup”的用户可能有以下任何一种用例:

    他们没有意识到自己已经登录,或者他们不知道自己是否以所需用户的身份登录。 他们想以其他用户身份登录。 他们想要创建一个新帐户(不同于当前登录的帐户)。 他们正试图弄清楚如何退出。

您应该确保盲目重定向(而不是将用户带到他们要求访问的页面)仍然使所有这些用例完全清晰。否则,您只会让用户感到沮丧,因为您没有将他们带到他们要求去的地方。

【讨论】:

以上是关于如何使用 Express 重新加载页面?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不重新启动的情况下在 Express 上重新加载一个文件?

js如何做等待页面加载效果

更改 *.js 文件后,页面重新加载非常缓慢(~30sec-2min)[express+gulp+gulp-nodemon+browser-sync]

使用浏览器后退按钮时如何强制重新加载页面?

在Streamlit中使用Python选择任何小部件后如何停止重新加载页面

如何使用javascript重新加载页面[重复]