【问题标题】:How to make Passport.js work in Adonis Framework如何让 Passport.js 在 Adonis 框架中工作
【发布时间】:2019-06-18 12:56:59
【问题描述】:

我想知道Passport.js 是否只能用于Express framework 而不能用于其他任何地方?文档并没有完全回答我的问题。我正在将我的项目从 Express 迁移到 Adonis.js,我似乎无法让护照工作。这是我的代码示例:

const passport = use('passport')  
const bearer = use('./bearer')

passport.use('bearer', bearer)

module.exports = passport

我是这样注册的:

const namedMiddleware = {
  auth: 'Adonis/Middleware/Auth',
  guest: 'Adonis/Middleware/AllowGuestOnly',
  bearer: passport.authenticate(['bearer'], { session: false }),
}

这是用法(我提供了一个不记名令牌):

Route.post('/', ({ response }) => {
  response.json('Hello world')
}).middleware(['bearer'])

它不起作用。关于 res.setHeader 的错误不是显示的函数。可能是因为adonis的response和http结构不同?

我知道 Adonis 有自己的身份验证库,但我的 INITIAL 目标是让我现在在 Express 中拥有的东西在 Adonis 环境中工作,然后再进行任何库更改以避免任何并发症。 p>

【问题讨论】:

    标签: node.js express passport.js middleware adonis.js


    【解决方案1】:

    我最近也从 knex 迁移到了 adonis.js。集成 passport.js 最初很痛苦,但我让它与宏一起使用。

    对于您的错误,Adonis 的 Request 对象没有 setHeader。您需要在 Request 上为该函数创建一个宏。像这样的

    function setHeader (name, value) {
      this.header(name, value)
    }
    Response.macro('setHeader', setHeader)
    

    将其添加到提供程序或挂钩中,您应该已经准备就绪。

    【讨论】:

      猜你喜欢
      • 2020-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多