如何强制使用 Passport 进行身份验证

Posted

技术标签:

【中文标题】如何强制使用 Passport 进行身份验证【英文标题】:How to force authentication with Passport 【发布时间】:2014-07-06 02:09:56 【问题描述】:

我已经实现了 2 条路线: app.post('/login', passport.authenticate....); app.get('/admin', myfunction);

如果用户第一次发帖登录,我会将他重定向到 /admin。

如果用户直接进入 /admin 怎么办?如何确保除非他已登录,否则不允许他访问 /admin 并重定向到登录屏幕?

对于从应用程序访问的 API,如果用户未通过护照身份验证,我如何发送 401?

【问题讨论】:

【参考方案1】:

Passport 是需要包含在需要路由保护的地方的中间件

Passport.js 是 Express 的中间件。您将它包含在任何需要保护的路由中,而不仅仅是登录路由/页面。

作为复习,What does middleware and app.use actually mean in Expressjs? 的批准答案和指向非现场页面A short guide to Connect Middleware 的链接也可以提供帮助。

保护 API 路由

首先,重复上面所说的... Passport 是中间件,因此您需要将它包含在定义 API 的路由中。此外,请参阅:

how can I protect an api endpoint with passportjs passportjs RESTful auth

对于 401,如果您还没有为这些 401 编写自己的处理程序,Passport 会在失败时为您生成这些。

【讨论】:

以上是关于如何强制使用 Passport 进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.3 + Passport:总是未经身份验证的错误

如何使用 Passport 对 GraphQL 端点进行身份验证?

如何使用 Passport 对 Sails JS 应用程序进行身份验证? [复制]

通过令牌进行身份验证,如果令牌失败,则通过会话进行身份验证,使用 Passport?

使用 Passport 进行社交身份验证登录后如何重定向到个人资料页面? (角度,快递,护照,jwt)

使用 Passport 对 API 端点进行身份验证