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 个陈述。 :)
如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 个陈述。 :)