如何强制使用 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?