Laravel中未显示API验证错误

Laravel中未显示API验证错误,laravel,laravel-6,Laravel,Laravel 6,我试图向我的Laravel post端点发出post请求,但没有收到任何验证错误 控制器 类登录控制器扩展控制器 { 公共函数adminLogin(AdminLoginRequest$请求) { 如果(身份验证::尝试([ 'email'=>$request->get('email'),'password'=>$request->get('password'),'role'=>'admin' ])) { $user=Auth::user(); $success['token']=$user->c

我试图向我的Laravel post端点发出post请求,但没有收到任何验证错误

控制器

类登录控制器扩展控制器
{
公共函数adminLogin(AdminLoginRequest$请求)
{
如果(身份验证::尝试([
'email'=>$request->get('email'),'password'=>$request->get('password'),'role'=>'admin'
])) {
$user=Auth::user();
$success['token']=$user->createToken('AppName')->accessToken;
return response()->json(['success'=>$success],200);
}否则{
返回响应()->json(['error'=>'unauthorized'],401);
}
}
}
API路线

Route::post('/admin/jamisi/login','Api\admin\Auth\LoginController@adminLogin');
路由::中间件('auth:api')->get('/user',函数(Request$Request){
返回$request->user();
});
AdminLoginRequest

class AdminLoginRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'email' => 'required|email|unique:users',
            'password' => 'required'
        ];
    }

    public function messages()
    {
        return [
            'email.required' => 'The Email Field Is required.',
            'email.unique' => 'The Email Has Already Been Taken.',
            'password.required' => 'The Password Field Is Required',
        ];
    }

    protected function failedValidation(Validator $validator)
    {
        throw new HttpResponseException(response()->json($validator->errors(), 422));
    }
}
当我尝试与邮递员一起测试时,我得到一个“401未授权错误”。验证错误没有显示

use Illuminate\Support\Facades\Validator;
use Illuminate\Http\JsonResponse; 
并将其添加到你的顶级adminLogin功能中。无需检查唯一的电子邮件。因为在这里你只检查电子邮件而不注册

$validator = Validator::make($request->all(), [
            'email' => 'required',
            'password' => 'required',

        ]);
        if ($validator->fails()) {

        $message = $validator->errors()->first();
        $errors=$validator->errors();
        $code='200';

        $response = array(
            'success' => false,
            'message' => $message,
            "errors" => $errors
        );

        return new JsonResponse($response, $code);

        }




如果希望验证错误的密码(而不是HTTP 401未经授权的响应),则需要更改控制器方法在
Auth::trunt
返回false时的操作:

if (Auth::attempt(...) {
        //...
} else {
    throw \Illuminate\Validation\ValidationException::withMessages([
        'email' => [trans('auth.failed')],
    ]);
}

这类似于框架的登录控制器如何处理失败的身份验证:

您可能需要授权才能调用此端点?@ceejayoz No。这是一个登录请求,因此您不需要授权。对于每个不需要授权的公共请求,请设置函数
authorize()
在自定义表单请求中返回false。实际上,在运行验证过程之前,Laravel将首先调用该函数。@PatrickObafemi响应代码表明情况并非如此。您是否可能正在控制器的构造函数中分配auth中间件(如某些默认的Laravel)并且没有向
adminLogin
方法中添加?不,我没有分配auth中间件,也没有向adminLogin方法中添加任何异常谢谢您的回复,但我仍然未经授权,我仍然希望使用请求类。