【问题标题】:redirect before loading URL在加载 URL 之前重定向
【发布时间】:2015-01-08 03:14:23
【问题描述】:

我正在开发一个 node.js 应用程序,我在其中使用护照来构建 OAuth 身份验证系统。配置后,我可以通过每个资源加载中的请求对象访问用户。但我的问题是:如何在每个 URL 加载之前检查 - 使用 app.get('/', function(..) {...}) 定义的资源 - 用户是否已登录,如果没有则重定向客户端登录。我可以在每个方法中添加一个测试,但这不是我想要的。

谢谢!

【问题讨论】:

    标签: node.js express passport.js


    【解决方案1】:

    您需要一个检查用户是否登录的中间件。

    isAuthenticated = function (req, res, next) {
      if (req.user)
        return next(); // All good, let the route handler process the request.
      else
        res.redirect('/login'); // Not logged in.
    }
    

    并在需要登录的每条路线上使用它:

    app.get('/something', isAuthenticated, function (req, res) {
      // Only in here if the user is authenticated.
    });
    

    您也可以通过app.use(isAuthenticated) 在每个路由上使用中间件,但您需要在方法中添加额外的逻辑,以免创建到/login 的无限重定向循环等。

    【讨论】:

    • 我已将此功能打包到connect-ensure-login 中。它还具有方便的选项,可让用户在登录后返回他们最初请求的页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 2012-12-17
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    相关资源
    最近更新 更多