如何使Passport.js在Adonis Framework中工作

时间:2019-06-18 12:56:59

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

我想知道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的响应和http结构不同?

我知道Adonis有自己的身份验证库,但我的 INITIAL 目标是在进行任何库更改以避免任何麻烦之前,使Express Express中拥有的内容可以在Adonis环境中工作。 >

1 个答案:

答案 0 :(得分:0)

我最近也从knex迁移到adonis.js。最初,整合passport.js很痛苦,但我可以将其与Macros一起使用。

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

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

将其添加到提供程序或钩子中,就应该一切就绪。