如何在Laravel中更改未验证用户的重定向路由?

时间:2018-10-09 04:21:11

标签: laravel-5

我有多个登录useradminclient。身份验证对于所有用户都可以正常工作。但是当他们的登录会话结束时,或者如果他们尝试不登录就访问页面时,我将它们重定向到其他路由时遇到问题。所有这些都重定向到login路由。

我知道在Middleware/Authenticate.php中配置了重定向路由。但是我不知道如何修改它以使其按需工作。

<?php
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
class Authenticate extends Middleware
{
      protected function redirectTo($request)
      {
         if ($this_is_an_admin){ // How to manage this?
            return route('admin/login');
         }
         elseif ($this_is_a_client){ // How to manage this?
            return route('client/login');
         }
         else {
            return route('login');         
         }
      }
}

该如何为每个用户分配不同的路由,例如user进入user/loginadmin进入admin/login,而client进入{ {1}}。

1 个答案:

答案 0 :(得分:0)

退出用户后,您将不知道会话中的当前用户是谁。因此,您不能根据当前用户切换到其他路由。

一个可能的解决方案是在cookie中存储最后一个用户角色(管理员,客户端或用户),并在中间件中使用该值。当然,您必须在每次用户成功登录时或通过另一个在每次经过身份验证的响应后添加cookie的中间件来设置cookie。

您还应该具有链接,以允许用户在用户界面中针对不同角色的不同登录形式之间进行切换。