我有一个看起来像这样的路线组:
Route::group(['prefix' => 'recipe','middleware'=>['auth.basic']], function (){
//Some things to do
});
当凭据无效时,Laravel输出"凭证无效。"如何使用自己的JSON响应覆盖此响应?
答案 0 :(得分:0)
在AuthController中,试试这个:
public function postLogin(Request $request)
{
$this->validate($request, [
'email' => 'required', 'password' => 'required',
]);
$credentials = [
'email' => $request->input('email'),
'password' => $request->input('password')
];
if (Auth::attempt($credentials, $request->has('remember')))
{
return redirect()->intended($this->redirectPath())
->with('success', 'You are successfully logged in');
}
return Response::json(array(
'success' => false,
'errors' => $this->getFailedLoginMessage(),
));
}
答案 1 :(得分:0)
我刚看了Illuminate\Auth\SessionGuard
。方法getBasicResponse()
似乎负责对登录尝试失败的响应(使用基本身份验证)。
protected function getBasicResponse()
{
$headers = ['WWW-Authenticate' => 'Basic'];
return new Response('Invalid credentials.', 401, $headers);
}
如何实际覆盖它似乎有点棘手。您可能需要扩展SessionGuard类并实现自己的getBasicResponse()方法。这是一个简单的部分,如何实际实例化你自己的后卫,而不是默认的,我还不知道。