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 - 升级身份验证后没有正确重定向的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.5登录后重定向到特定路由

如何在 Vue 2 和 Laravel 5.5 中验证会话和身份验证令牌

如何使用 Laravel 5.5 身份验证使电子邮件登录不区分大小写

为 JWTAuth 身份验证 Laravel 5.5 指定除默认值之外的其他守卫/提供者

使用 Laravel 作为后端刷新 Vue.js SPA 的身份验证令牌

从 Laravel 5.5 升级后,Logger 不再工作