我正在使用 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']),
]);
}
}
我应该在哪里输入重定向代码?
答案 0 :(得分:2)
您可以在sendFailedLoginResponse()
中覆盖AuthController.php
方法,例如:
protected function sendFailedLoginResponse(Request $request)
{
return redirect()->route('myCustomRoute')
->withInput($request->only($this->loginUsername(), 'remember'))
->withErrors([
$this->loginUsername() => $this->getFailedLoginMessage(),
]);
}
答案 1 :(得分:0)
@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')],
]);
}