经过身份验证后,Laravel 5.5 Multi-Auth不会重定向

时间:2018-01-02 02:15:48

标签: php laravel authentication laravel-5.5

我正在laravel中创建一个多auth系统,其中有两种类型的用户:Admins(由我创建)和Users(使用本机laravel auth系统)。

如果我以用户身份登录,当我在登录时尝试访问登录页面时,它会将我重定向回仪表板但是如果我以管理员身份登录,则当我再次访问管理员登录页面时,它让我再次登录,尽管已经以管理员身份登录。

以下是我的RedirectIfAuthenticated类的代码:

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class RedirectIfAuthenticated
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        switch ($guard)
        {
            case 'admin':
                if(Auth::guard($guard)->check())
                {
                    return redirect()->route('admin.dashboard');
                }
                break;

            default:
                if(Auth::guard($guard)->check())
                {
                    return redirect('/home');
                }
                break;
        }

        /*
        if (Auth::guard($guard)->check())
        {
            return redirect('/home');
        }
        */

        return $next($request);
    }
}

有人能解释我发生了什么吗?

1 个答案:

答案 0 :(得分:0)

您能否显示您已注册的旨在为管理员提供保护的路线?默认情况下,当您使用auth中间件时,它将使用默认的auth guard - 而不是您的管理员。

当您使用管理员防护注册要保护的路线时,您需要稍微改变一下。通过在控制器中使用路由组或middleware方法。

// Cover a block of routes...

Route::group(['middleware' => 'auth:admin'], function () {
    //
});

// Or do it in your controller...

class PageController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth:admin');
    }
}