laravel - 如何根据目标用户的角色将其重定向到不同的路线?

标签 laravel laravel-5

我想根据用户的角色将他们重定向到不同的路线。我的应用程序中有两个安全区域,“管理”和“仪表板”。我想检查用户是否经过身份验证,然后重定向到预期,但如果用户具有角色编辑器,则应将其重定向到仪表板,否则,如果他具有管理员角色,则应将其重定向到管理区域。

我在登录中使用 AuthenticatesAndRegistersUsers 类。我的自定义 Controller 上有这个:

 /**
 * The default redirecTo path.
 *
 */
 protected $redirectTo = '/dashboard';

因此,当用户通过身份验证时,它将被重定向到仪表板,但我想检查预期的网址是否在管理员组路由上,以及用户是否具有管理员角色,它应该被重定向到管理区域。

我正在使用此中间件重定向到登录:

public function handle($request, Closure $next)
{
    if ($this->auth->guest())
    {
        if ($request->ajax())
        {
            return response('Unauthorized.', 401);
        }
        else
        {
            return redirect()->guest('auth/login');
        }
    }

    return $next($request);
}

最佳答案

您可以覆盖 redirectPathAuthController 中的特征使用的方法注入(inject)您需要的逻辑。像这样的事情:

/**
 * Get the post register / login redirect path.
 *
 * @return string
 */
public function redirectPath()
{
    // Logic that determines where to send the user
    if (\Auth::user()->type == 'admin') {
        return '/admin';
    }

    return '/dashboard';
}

编辑:

Laravel 在 AuthenticatesAndRegistersUsers 中使用以下声明成功登录后重定向用户的特征:

return redirect()->intended($this->redirectPath());

这将尝试将用户重定向到之前尝试过的 URL。

如果您需要在用户登录后将用户重定向到正确的位置,最好通过向身份验证中间件添加更多逻辑来完成。

关于laravel - 如何根据目标用户的角色将其重定向到不同的路线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31012985/

相关文章:

laravel - L5.5 : How to auto discover package?

php - Laravel : failing to add foreign key 中的 SQLSTATE[HY000] 错误

Laravel 7 HTTP 客户端 - 无法发送带有 `body` 的 POST 请求

mysql - 如何从表格 : Laravel 5. 8 更新 mysql 表行

php - 如果它们相同,为什么我会得到 "definition differs"?

php - 如何在 Laravel 中制作带有步骤的表单?

php - Laravel 5.1 中 session 不保存

php - 使用 Behat/Mink 和 Behat Laravel Extension 测试 Multi-Tenancy Laravel 应用程序

php - 虚拟主机显示目录结构

php - SQLSTATE[HY000] : General error: 1364 Field 'care' doesn't have a default value