【问题标题】:Can I alert the user from the route/middleware?我可以通过路由/中间件提醒用户吗?
【发布时间】:2017-05-09 01:45:42
【问题描述】:

我正在使用路由来检查令牌是否有效。如果不是,我将用户路由到登录页面。我想让用户知道他们正在以 alertpage 的形式退出。

当用户点击Link A(将他们带到网站上的另一个页面)时,路由会调用validate.js 文件:

route.js

var checkToken = require('../validate.js');

router.use(checkToken.checkToken);

然后调用 validate.js 文件,该文件发出 HTTP 调用来检查 如果令牌有效,如果不是,则将用户重定向到登录 页面:

validate.js

var checkToken = function(req, res, next) {
if (config.enableTokenValidation) {

var usersToken = req.user.token;

validateToken(receivedToken, req.requestId, function(err, response, body) {
  if (err || response.statusCode != 200) {

    console.log("Error, token is not valid");
    res.redirect("/auth/logout/");
  } else {

    return next();
  }

});

如何向loginView.js 文件发送消息,以便在前端显示错误(或创建警报)? 但由于这种情况发生在中间件中,并且触发验证检查的是程序中其他页面的其他路由,因此登录页面不会进行检查,因此我无法获得响应以提醒用户。

如果有任何方法可以使用我正在做的事情来实现这一目标,或者我还有其他方法可以做到吗?

非常感谢

【问题讨论】:

    标签: javascript html node.js express routes


    【解决方案1】:

    而不是做

    res.redirect();
    

    你为什么不发送类似的错误消息

    res.status('401').send({error:'Invalid Token'});
    

    那么就可以在api调用的errorHandler()中进行必要的步骤了。

    【讨论】:

      【解决方案2】:

      您可以返回一个对象,该对象包含一个触发警报消息的方法(或者您的 HTML 中的更改,如果您想更改视图)。然后使用前端的 yourObject.method。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-02
        • 1970-01-01
        • 1970-01-01
        • 2022-11-03
        • 1970-01-01
        • 1970-01-01
        • 2015-08-15
        • 2021-07-08
        相关资源
        最近更新 更多