我正在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);
}
}
有人能解释我发生了什么吗?
答案 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');
}
}