我得到一个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的正确建议/好的评论。