Adonis.js角色认证

时间:2019-01-23 21:28:57

标签: authentication adonis.js

我目前正在完成我的第一个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.rolenullrolenull的原因,它在数据库中不为null,并且如果我删除了{{1} }来自路由userRole的中间件在响应中不是user.role

最终,我只是希望为某些经过身份验证的用户实现受保护的路由,并欢迎您提出建议。但理想情况下,我想修复此处的内容。

0 个答案:

没有答案