有时需要检查没有参数的操作的用户授权,例如创建/存储方法:
class PostPolicy
{
use HandlesAuthorization;
/**
* Determine if the user can create a new post.
*
* @param \App\User $user
* @return bool
*/
public function create(User $user)
{
if($user->is_admin)
{
return true;
}
return false;
}
}
并在PostController中使用authorize方法:
class PostController extends Controller
{
/**
* Show the form for creating a new post.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$this->authorize('create');
//...
}
}
但似乎没有参数的策略方法不能与控制器上的授权方法相对应,授权总是失败。
答案 0 :(得分:4)
如果定义的策略方法没有这样的参数:
class PostPolicy
{
use HandlesAuthorization;
/**
* Determine if the user can create a new post.
*
* @param \App\User $user
* @return bool
*/
public function create(User $user)
{
if($user->is_admin)
{
return true;
}
return false;
}
}
您可以使用以下授权方法:
class PostController extends Controller
{
/**
* Show the form for creating a new post.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$this->authorize('create', \App\Post::class);
//...
}
}
并在刀片模板中使用@can
Blade指令:
@can('create', \App\Post::class)
<!-- The Current User Can Update The Post -->
@endcan
也可以使用Gate
外观,User
模型或policy
帮助。