我想使用表单请求来验证模型,所以我开始创建php artisan make:request TaskRequest
并在我添加TaskRequest类之后`
public function rules()
{
return [
'name' => 'required|min:5',
];
}
public function messages()
{
return [
'name.required' => 'A title is required',
];
}
`
和我的逻辑
Route::post('/tasks',function (\App\Http\Requests\TaskRequest $request){
$task = new \App\Task();
$task->name = $request->input("name");
$task->save();
return response()->json(['task was created',$task], http_response_code());
});
因此,当我尝试添加任务时,我收到错误HttpException, This action is unauthorized.,AuthorizationException ...
没有验证,这对我有用。那么我该如何解决这个问题呢?
答案 0 :(得分:1)
每个(自创)请求都有一个authorize
函数,用于确定是否允许用户发送请求。这对于检查管理员权限或类似功能非常有用。
在您的情况下,您只需返回true
即可。可以在corresponding docs
TaskRequest
中的授权功能如下所示:
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
答案 1 :(得分:0)
在"表单请求"的自定义请求类中其中包含验证逻辑传递return:true;
而不是return:false;
,然后它将像魅力一样工作。
代码看起来如下,
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class portfolioValidate extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'title'=> 'required',
'content'=> 'required'
];
}
}
因为您可以使用中间件对包含此表单的页面进行身份验证...所以我们在FormRequest
类中不需要该授权。因此,返回true将使其(验证)被授权用于所有情况。
我认为现在每个人都很清楚。