【发布时间】:2020-09-01 19:50:14
【问题描述】:
我有一个控制器,它在其功能中验证分配给 Post 模型的策略:
App\Http\Controllers\PostController
class PostController extends Controller
{
public function index(Request $request, Post $post) {
$response = Gate::inspect('viewAny', $post);
if ($response->allowed()) {
echo 'valid';
} else {
echo 'invalid';
}
}
}
文件:PostPolicy
public function viewAny(User $user)
{
return $user->role === 'admin' ? Response::allow() : Response::deny();
}
当用户以管理员身份登录时,它返回登录管理员的消息,当它不是管理员时,它返回一个 403 响应,我想用类似“用户不是管理员”的消息替换这个 403 响应
【问题讨论】:
-
我正在使用 laravel 翻译
-
当我更改为
return $user->role === 'admins' ? Response::allow() : Response::deny('User is not administrator');返回页面 403 并显示消息用户不是管理员,但我想返回例如 false ,如果响应为 false 则在控制器上,所以我会会做点什么。 -
你可以使用 abort_if(!$user->can('viewAny', Model::class), Response::HTTP_FORBIDDEN, 'response message');