如何在Laravel中以管理员身份正确验证用户身份?

时间:2016-08-09 15:07:13

标签: php laravel authentication

我试图在我的应用程序中引入“重影” - 我可以从用户的POV访问我们的应用程序。

目前使用loginUsingID功能实现此目的,只有管理员才能访问受保护的路由。但是,我还想向管理员显示他们通过在我们的应用顶部显示一个栏来重影用户。

我在考虑向用户is_being_ghosted添加一个属性 - 在logout上设置为false,在login上设置为false,在ghostLogin上设置为true。

但是我意识到管理员试图欺骗用户的可能性很小,而且它设置了该属性,当他们正在调查帐户中的内容时,用户自己刷新他们的页面(他们已经过身份验证,所以不需要再次登录)。在这种情况下,他们会在顶部看到这个“管理栏”,显然我不想发生这种情况。

有没有一种有效的方法来实现我在这里尝试做的事情?我是以错误的方式解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

正如jszobody所述。您可以宁愿管理会话中的状态。您保护/ghost路线,然后如果设置了original-user-id会话,则会显示您的栏和unghost链接。

public function ghost(Request $request, $id)
{
    $request->session()->put('original-user-id', Auth::user()->id);

    Auth::loginUsingId($id);

    return redirect('/');
}

public function unghost(Request $request)
{
    if ($request->session()->has('original-user-id')) {
        Auth::loginUsingId($request->session()->pull('original-user-id'));
    }

    return redirect('/');
}

<强>更新

ghost端点基本上接受您要模拟的id,通常通过ajax搜索输入或类似内容找到。无论您的用例是什么套件。

相关问题