已登录时从登录页面重定向

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 对这次处决说了什么?

以上是关于已登录时从登录页面重定向的主要内容,如果未能解决你的问题,请参考以下文章

为啥登录后phpmyadmin会重定向到登录页面?

django:登录后重定向到引用页面[重复]

使用php重定向登录页面

vuejs - 如果已经登录,则从登录/注册重定向到主页,如果未登录 vue-router,则从其他页面重定向到登录

React 路由器会短暂显示登录屏幕,然后如果用户已登录,则会重定向到仪表板

如何在laravel中登录后重定向特定页面