laravel 授权@can 指令总是失败
laravel authorization @can directive always fails
我正在尝试在 Laravel 中实施授权,遵循 this guide。
订阅策略:
public function manage($user) {
return in_array($user->type, ['developer', 'admin', 'operations']);
}
订阅控制器:
public function __construct() {
$this->authorize('manage', Subscription::class);
}
能力manage
不是SubscriptionController
中的方法。该能力是授权控制器中的任何方法。
在控制器中,一切似乎都工作正常,即如果用户未被授权 add/edit/delete/view 订阅,用户将收到 403。
现在我想让某些菜单项在用户未被授权时不显示。但是我无法使 @can
指令起作用。
@can('manage', Subscription::class)
<li><a href="{{ route('subscriptions.index') }}">Subscriptions</a></li>
@endcan
即菜单项总是不显示(授权总是失败)
我在Laravel 5.1.24
我错过了什么?
我通过添加 App\
解决了这个问题,如:
@can('manage', App\Subscription::class)
因为 AuthServiceProvider
中的 $policies
数组以 App\Subscription
作为键。
你必须使用 role/premission 来做这样的特定对象
@can('update-post', $post)
<a href="/post/{{ $post->id }}/edit">Edit Post</a>
@endcan
我是你的情况
@can('manage', Subscription::class->find(1))
<li><a href="{{ route('subscriptions.index') }}">Subscriptions</a></li>
@endcan
我正在尝试在 Laravel 中实施授权,遵循 this guide。
订阅策略:
public function manage($user) {
return in_array($user->type, ['developer', 'admin', 'operations']);
}
订阅控制器:
public function __construct() {
$this->authorize('manage', Subscription::class);
}
能力manage
不是SubscriptionController
中的方法。该能力是授权控制器中的任何方法。
在控制器中,一切似乎都工作正常,即如果用户未被授权 add/edit/delete/view 订阅,用户将收到 403。
现在我想让某些菜单项在用户未被授权时不显示。但是我无法使 @can
指令起作用。
@can('manage', Subscription::class)
<li><a href="{{ route('subscriptions.index') }}">Subscriptions</a></li>
@endcan
即菜单项总是不显示(授权总是失败)
我在Laravel 5.1.24
我错过了什么?
我通过添加 App\
解决了这个问题,如:
@can('manage', App\Subscription::class)
因为 AuthServiceProvider
中的 $policies
数组以 App\Subscription
作为键。
你必须使用 role/premission 来做这样的特定对象
@can('update-post', $post)
<a href="/post/{{ $post->id }}/edit">Edit Post</a>
@endcan
我是你的情况
@can('manage', Subscription::class->find(1))
<li><a href="{{ route('subscriptions.index') }}">Subscriptions</a></li>
@endcan