首页 > 解决方案 > Laravel 登录后要去 / 路由

问题描述

这是我的登录控制器

 protected $redirectTo;
/**
 * Create a new controller instance.
 *
 * @return void
 */
public function __construct()
{
    if(Auth::check() && Auth::user()->role->id == 1){
        $this->redirectTo=route('admin.dashboard');
    }
    else{
        $this->redirectTo=route('user.dashboard');
      }

    $this->middleware('guest')->except('logout');
}

这是我的 web.php

Route::get('/', function () {
    return view('welcome');
})->name('home');

Auth::routes();

我不知道为什么在成功登录其去往/路线后我想将其发送到另一条路线,在登录后我手动输入路线我成功查看了该路线如果我登录它不会显示但怎么能我在登录路线后管理

标签: laravellaravel-5routinglaravel-5.7laravel-authentication

解决方案


你这样做是不对的。您不应该将此类代码放入控制器构造函数中,因为它可能无法正常工作。

相反,在您的控制器中,您应该定义自定义redirectTo方法:

protected function redirectTo()
{
   if(Auth::check() && Auth::user()->role->id == 1) {
       return route('admin.dashboard');
   }

   return $this->redirectTo=route('user.dashboard'); 
}

这应该有效,因为在Illuminate/Foundation/Auth/RedirectsUsers.phptrait 中有方法:

public function redirectPath()
{
    if (method_exists($this, 'redirectTo')) {
        return $this->redirectTo();
    }

    return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home';
}

默认情况下,当用户成功登录时,稍后在 LoginController 中使用定义。


推荐阅读