我想知道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环境中工作。 >
答案 0 :(得分:0)
我最近也从knex迁移到adonis.js。最初,整合passport.js很痛苦,但我可以将其与Macros一起使用。
对于您的错误,Adonis的Request对象没有setHeader。您将需要在Request上为该功能创建一个宏。像这样
function setHeader (name, value) {
this.header(name, value)
}
Response.macro('setHeader', setHeader)
将其添加到提供程序或钩子中,就应该一切就绪。