我试图在我的应用程序中引入“重影” - 我可以从用户的POV访问我们的应用程序。
目前使用loginUsingID
功能实现此目的,只有管理员才能访问受保护的路由。但是,我还想向管理员显示他们通过在我们的应用顶部显示一个栏来重影用户。
我在考虑向用户is_being_ghosted
添加一个属性 - 在logout
上设置为false,在login
上设置为false,在ghostLogin
上设置为true。
但是我意识到管理员试图欺骗用户的可能性很小,而且它设置了该属性,当他们正在调查帐户中的内容时,用户自己刷新他们的页面(他们已经过身份验证,所以不需要再次登录)。在这种情况下,他们会在顶部看到这个“管理栏”,显然我不想发生这种情况。
有没有一种有效的方法来实现我在这里尝试做的事情?我是以错误的方式解决这个问题吗?
答案 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搜索输入或类似内容找到。无论您的用例是什么套件。