已登录时从登录页面重定向
Posted
技术标签:
【中文标题】已登录时从登录页面重定向【英文标题】:Redirect from login page when already logged in 【发布时间】:2019-12-14 13:12:17 【问题描述】:我有一个laravel application
,我正在逐步学习它。我的问题如下:
一旦用户使用 Laravel 身份验证系统登录到应用程序,他们就会被重定向到各自的仪表板。问题是,当有人不小心关闭了他们的浏览器,然后他们转到了网站的基本 url,它会重新加载登录页面,因为我们自定义了身份验证过程
我想要完成的是,如果有人登录,如果他们进入登录页面,实际上是/
,命名路由为mylogin
,他们会被重定向到不同的页面。
这是我的尝试:
RedirectIfAuthenticated Middleware:
if (Auth::guard($guard)->check())
if($request->current()->getName()=='mylogin')
return redirect('/landlords/dashboard');
return redirect('/landlords/dashboard');
【问题讨论】:
他们去登录是因为当他们关闭浏览器时,带有会话ID的cokiee被删除了,所以他们必须重新登录。您可以在 laravel 文档中阅读有关记住用户的内容:laravel.com/docs/5.8/authentication#remembering-users 我添加了我的尝试 我有人登录了他无法进入登录页面,有守卫保护,仅限访客 它是一个非保护页面。这应该就像页面 == 登录和经过身份验证的重定向一样简单 在 laravel 包含的授权系统中,如果你已经通过了身份验证,你将无法进入登录页面。您可以通过命令和 10 分钟的阅读来设置它,无需从头开始重写新的 Auth 系统 【参考方案1】:您可以创建一个新的中间件,您可以在其中进行 auth()->检查,并且可以轻松地重定向到您想要的位置。
【讨论】:
【参考方案2】:转到App\Http\Middleware\RedirectIfAuthenticated
,然后将其更改为
public function handle($request, Closure $next)
if ($this->auth->check())
return redirect('/admin');
return $next($request);
【讨论】:
这会将用户重定向到/admin
,并且无法转到其他页面
这只是网址,你可以更改任何内容
这个中间件什么时候执行?在所有路由中还是仅在登录路由中?
我如何确定我们所在的页面/路线?这将停止任何页面。或者@RoyHabeahan 对这次处决说了什么?以上是关于已登录时从登录页面重定向的主要内容,如果未能解决你的问题,请参考以下文章
vuejs - 如果已经登录,则从登录/注册重定向到主页,如果未登录 vue-router,则从其他页面重定向到登录