【问题标题】:Custom Message - Laravel 7 - Denied Authorization自定义消息 - Laravel 7 - 拒绝授权
【发布时间】: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 响应

【问题讨论】:

  • 看看policy responses
  • 我正在使用 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');

标签: php laravel policies


【解决方案1】:

您可以在控制器中的用户模型上使用can()cant() 方法:

if ($user->cant('view-any', $post)) {
    return 'User is not administrator';
}

来源:Laravel Docs - Authorization

【讨论】:

    猜你喜欢
    • 2021-09-17
    • 2019-10-21
    • 2018-11-30
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    相关资源
    最近更新 更多