AdonisJS 'bouncer' 包没有按预期工作

AdonisJS 'bouncer' package not working as intended

here所述,我已实现授权:

start/bouncer.ts:

import Bouncer from '@ioc:Adonis/Addons/Bouncer'
export const { actions } = Bouncer
export const { policies } = Bouncer.registerPolicies({
  UserPolicy: () => import('App/Policies/UserPolicy'),
})

app/Policies/UserPolicy.ts:

import { BasePolicy } from '@ioc:Adonis/Addons/Bouncer'
import User from 'App/Models/User'
export default class UserPolicy extends BasePolicy {
  public async before(user?: User) {
    return user?.isSuperUser
  }
  public async list(user: User) {
    await user.load('policies')
    return user.policies.some((policy) => policy.identifier === 'user:list')
  }
  // ...
}

resources/vires/layouts/main.edge

@can('UserPolicy.list')
  <p>Can see users list</p>
@endcan

而且我看不到该段落。事实上,我把 console.log 放在动作中,但它没有被执行。我不知道我是否遗漏了什么。任何人都可以阐明它吗?

明白了! This 说:

  • 当 before 挂钩 return 为 true 或 false 值时,实际的操作回调永远不会执行。
  • 如果您希望保镖执行下一个挂钩或操作回调,请确保 return 未定义。

遗漏了这 2 个陈述。 :)