Laravel 5.5 - 升级身份验证后没有正确重定向
Posted
技术标签:
【中文标题】Laravel 5.5 - 升级身份验证后没有正确重定向【英文标题】:Laravel 5.5 - After upgrading auth is not redirecting properly 【发布时间】:2018-02-27 01:00:29 【问题描述】:我刚刚将我的应用程序从 Laravel 5.4 升级到 v 5.5。未经身份验证的用户现在无法正确重定向。
通常,未经身份验证的用户应该被重定向到 /manage/login,但它会被重定向到 /login 路由。
在 Laravel v 5.4 中一切正常
我的应用包含两个守卫。
web.php
中的路由
Auth::routes();
Route::middleware(['auth:manager'])->group(function ()
Route::get('/manage', 'Manage\AdminController@dashboard')->name('manage.home');
);
因此,在升级之前,尝试访问 /manage 的未经身份验证的用户被重定向到 /manage/login,但升级后它被重定向到 /login强>。
我在 Manage\Auth 中根据需要复制和修改了 Auth Controller。 同样,视图位于文件夹结构 Manage\Auth 中。
我在 Controllers\Manage\Auth 中的 LoginController
|
Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/manage/';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
$this->middleware('guest')->except('logout');
public function showLoginForm()
return view('manage.auth.login');
public function logout(Request $request)
$this->guard()->logout();
$request->session()->flush();
$request->session()->regenerate();
return redirect('/manage');
protected function guard()
return Auth::guard('manager');
【问题讨论】:
尝试将名为login
的命名路由添加到指向App\Http\Controllers\Auth\LoginController@showLoginForm
且路径为manage/login
的路由
【参考方案1】:
我遇到了同样的问题,解决起来很简单。
关键是,如果您使用 guards,您可能在 app/Exceptions/Handler.php
中处理未经身份验证的异常。使用 laravel 5.4 时。
更新到 5.5 后,这是在 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php
下完成的。
你应该参考这个Laravel 5.5 change unauthenticated login redirect url了解更多关于如何解决它的细节。
【讨论】:
以上是关于Laravel 5.5 - 升级身份验证后没有正确重定向的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Vue 2 和 Laravel 5.5 中验证会话和身份验证令牌
如何使用 Laravel 5.5 身份验证使电子邮件登录不区分大小写
为 JWTAuth 身份验证 Laravel 5.5 指定除默认值之外的其他守卫/提供者