我正在使用Laravel 5.2,我正在使用默认的登录控制器。如果用户成功登录,我知道如何重定向用户,但如果他没有正确输入电子邮件或密码,我不知道如何重定向他。
这是控制器代码
class AuthController extends Controller
{
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
protected $redirectTo = '/';
public function __construct()
{
$this->middleware($this->guestMiddleware(), ['except' => 'getLogout']);
}
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
]);
}
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
}
我应该在哪里输入重定向代码?
您可以在AuthController.php
中重写sendFailedLoginResponse()
方法,如:
protected function sendFailedLoginResponse(Request $request)
{
return redirect()->route('myCustomRoute')
->withInput($request->only($this->loginUsername(), 'remember'))
->withErrors([
$this->loginUsername() => $this->getFailedLoginMessage(),
]);
}
@Alexey的答案修改为Laravel 5.8,将此添加到app'Http'Controllers'Auth'LoginController.php
:
protected function sendFailedLoginResponse(Request $request)
{
return redirect()
->route('login')
->withInput($request->only($this->username(), 'remember'))
->withErrors([
$this->username() => [trans('auth.failed')],
]);
}