Laravel 12已登录访问登录页重定向至/home而非自定义URL问题
解决已登录状态访问登录页重定向地址问题
你设置的$redirectTo仅控制登录成功后的跳转地址,但已登录用户访问登录页时的拦截重定向,是由RedirectIfAuthenticated中间件处理的,默认指向/home,所以需要修改这个中间件的逻辑,或者自定义guest中间件的重定向规则。
方案一:修改全局RedirectIfAuthenticated中间件
找到app/Http/Middleware/RedirectIfAuthenticated.php文件,修改handle方法内的重定向地址:
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class RedirectIfAuthenticated { public function handle(Request $request, Closure $next, ...$guards) { $guards = empty($guards) ? [null] : $guards; foreach ($guards as $guard) { if (Auth::guard($guard)->check()) { // 替换为目标重定向地址 return redirect('/admin/cities'); } } return $next($request); } }
方案二:在LoginController中自定义guest中间件规则
如果不想修改全局中间件,可直接在LoginController的构造方法里指定guest中间件的重定向目标:
public function __construct() { $this->middleware('guest', ['redirectTo' => '/admin/cities'])->except('logout'); $this->middleware('auth')->only('logout'); }
补充说明
$redirectTo属性仅负责用户完成登录操作后的跳转,而已登录用户访问登录页的拦截逻辑,属于未授权访问的拦截,由RedirectIfAuthenticated中间件独立控制,这是两个不同的流程,所以之前的修改不会生效。
内容的提问来源于stack exchange,提问作者Urmish Solanki
相关产品推荐
相关产品推荐

