【问题标题】:Access a route, send an error alert, and redirect访问路由、发送错误警报和重定向
【发布时间】:2018-09-06 21:40:10
【问题描述】:

我正在使用 nodejs、expressjs、javascript...

当有人试图访问一个在未登录时无法访问的路由时,我可以使用此“中间件”功能,但我无法发送警报、重定向以及响应,我该怎么做?

function isLoggedIn (req, res, next) 
{

    if (req.isAuthenticated()) {
        return next();
    }

    res.send('<script>alert("You need to be authenticated to access this page")</script>'); 
    res.redirect('/');

}

【问题讨论】:

    标签: javascript node.js express middleware


    【解决方案1】:

    @Michael 是对的。

    您应该将服务器逻辑与客户端解耦。

    1. 服务器应该知道您是否已登录
    2. 服务器不应该知道您如何告诉您的用户。

    如果中间人未通过身份验证,他应该简单地发送 401 状态。然后客户端检查是200(OK)还是401(Unauthorized),根据状态显示用户内容

    function isLoggedIn (req, res, next) 
    {
    
        if (req.isAuthenticated()) {
          res.status(200).send('Welcome')
        } else {
          res.status(401).send('You are not allowed')
        }           
    }
    

    【讨论】:

      【解决方案2】:

      我不建议这样做(在服务器端响应中发送 html) 反而: 发送一个带有变量的 json,该变量会告诉您在客户端发出警报:

      res.json({ success: false });
      

      然后在客户端,如果 !success 并重定向,您可以提醒消息。

      【讨论】:

      • 非常感谢!!你是对的“不建议这样做(在服务器端响应中发送 html)”,谢谢你的提示,我是初学者,这个提示是最好的!顺便说一句,它奏效了! :D
      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 2021-11-04
      • 2018-12-31
      • 2021-08-22
      • 2016-02-14
      • 2023-01-28
      • 2022-06-18
      • 2016-02-03
      相关资源
      最近更新 更多