在 node.js with express 中,有没有办法即时更改 link 的 url?

In node.js with express, is there a way of changing the url of a link on the fly?

我在一个页面上有一个link:

<a href="/application-reference" class="govuk-back-link">Back</a>

这当然会将用户带到“/application-reference”。但是,如果会话超时,我希望用户转到“/session-ended”。由于缺少 request.session.

检测到会话超时

我尝试更改 href 以将用户发送回同一页面(即 link 在 'security-code' 中并将用户带到 'security-code')处理代码可以查找 request.session 并决定重定向到哪个页面,只有我找不到代码检测页面已通过后退按钮自行调用的方法。

我认为答案是在我的 express 模块中放置一些东西,这样重定向到“/application-reference”的 router.get 调用将在正确的情况下重定向到“/session-ended”。但是我不知道该怎么做。

我想理想的情况是,只要用户在会话超时后点击任何屏幕,就会调用“/session-ended”屏幕。

有什么建议吗?

在您的 /application-reference-handler 中,您可以检查 req-object 上的 session 是否仍然有效。如果不是 redirect 请求 /session-ended:

app.get('/application-reference', (req, res) => {
 if(!req.session) { // or a more detailed check for the session's validity
    return res.redirect("/session-ended");
 }
 // rest of the handler-code ...
});

一个更好的方法是定义一个单独的 middleware 来检查用户的会话 - 这允许您重用这个中间件,而不必在您的处理程序中重复检查:

function validateSession(req,res,next) {
 if(!req.session) { // or a more detailed check for the session's validity
   return res.redirect("/session-ended");
 }
 // all is good, go to the next middleware
 next();
});

app.get('/application-reference', validateSession, (req, res) => { ... });