我目前正在完成我的第一个Adonis项目,所以请耐心等待,因为这可能是一个非常简单的错误。我已经在Google和Google文档中搜索了可能有用的相关项目和资料,但是找不到任何东西。
我将以下内容用作基于用户角色实施受保护路由的参考: https://forum.adonisjs.com/t/authenticated-user-parameters/608/2
但是,有些事情不对劲,我不确定哪里出了问题。
app / Middleware / UserRole.js
class UserRole {
async handle ({ auth }, next) {
await auth.user.load('role')
await next()
}
}
module.exports = UserRole
start / routes.js
const Route = use('Route')
Route.group(() => {
Route.post('groups/new', 'GroupController.create').middleware('auth', 'userRole')
})
.prefix('api');
app / Controllers / Http / GroupController.js
const Group = use('App/Models/Group')
class GroupController {
// just testing the middleware here
async create ({ auth, request }) {
const user = await auth.getUser()
return {
user: user,
role: auth.user.getRelated('role')
}
}
}
module.exports = GroupController
app / Models / User.js
class User extends Model {
tokens () {
return this.hasMany('App/Models/Token')
}
role () {
return this.belongsTo('App/Models/Role')
}
}
module.exports = User
app / Models / Role.js
class Role extends Model {
user() {
return this.hasMany('App/Models/User')
}
}
module.exports = Role
因此,当我在该端点上通过Postman运行POST时,我想我应该找回用户和角色。但这实际上是我回来的:
{
"user": {
"id": 1,
"email": "<some-users-email>",
"password": "<some-hashed-password>",
"role": null
},
"role": null
}
我不明白的是为什么user.role
是null
而role
是null
的原因,它在数据库中不为null,并且如果我删除了{{1} }来自路由userRole
的中间件在响应中不是user.role
。
最终,我只是希望为某些经过身份验证的用户实现受保护的路由,并欢迎您提出建议。但理想情况下,我想修复此处的内容。