我得到一个422 HTTP代码,即使我登录?



我得到一个422 HTTP代码,即使我登录?我从我的刀片上发送了一个XHR帖子请求。在路由中,我使用认证中间件。这个作品。这意味着你必须登录才能发送邮件。

web.php

Route::post('/posts', [PostController::class, 'store'])->middleware(['web', 'auth'])->name('posts.store');

现在我创建了自己的请求类来验证发送的数据。

poststoreequest authorise method

public function authorize()
{
return false;
}

因为我使用我自己的自定义请求类,我得到这个错误信息,即使我登录:

This action is unauthorized.", exception: "Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException

我想知道这是为什么?

如果用户被授权执行此操作,则必须在authorize()方法中进行检查。如果你有一个正确的角色系统,你可以在这里实现它。例如,只允许具有Writer角色的用户创建帖子。如果你没有,你只是允许所有登录的人,然后把返回值改为true或返回auth()->check()

不包含角色系统的示例:

public function authorize()
{
return true;
// or
return auth()->check();
}

With role System:

public function authorize()
{
return auth()->user()?->isWriter();
}

重要提示:感谢@matiaslauriti &&@Tpojka的正确建议/好的评论。

相关内容

  • 没有找到相关文章

最新更新