在我的Laravel应用程序中,用户个人资料信息包含敏感详细信息,例如税号和银行帐户详细信息。由于该应用程序通过移动设备被大量使用(并且人们经常丢失他们的移动电话),因此我将用户配置文件拆分为“财务详细信息”。和其他细节'。
如果有人想要访问财务详细信息,则必须提供用户密码。路由接受POST和GET,这里是控制器代码:
public function showDetails(Request $request)
{
if ($request->isMethod('post')) {
$user = Auth::user();
if (Hash::check($request->password, $user->password)) {
return view('staff.finance-info', compact('user'));
} else {
$request->session()->flash('auth_failed', 'Password incorrect');
}
}
return redirect()->route('staff.profile');
}
我接受GET,以便我可以优雅地将请求重定向到其他详细信息'轮廓。
这适用于查看详细信息,但我现在需要提供更新信息的路由。 (一个用于银行详细信息,一个用于税收等)。我不希望用户必须在每个页面上重新输入密码。
处理此方案的典型方法是什么?通过发布某种令牌,或许?我应该创建一个随机令牌并将其存储为会话中的过期值吗?还有哪些其他选择?
答案 0 :(得分:0)
您可以将会话名称finance
存储为true
,以获取查看密码,并检查其后续检查以查看和更新。
在此处设置会话值
if (Hash::check($request->password, $user->password)) {
session("finance",true);
return view('staff.finance-info', compact('user'));
} else {
$request->session()->flash('auth_failed', 'Password incorrect');
}
在view
和update
之前检查。这适用于view
if(session("finance")){
$user = Auth::user();
return view('staff.finance-info', compact('user'));
}
同样检查update