Laravel:允许临时访问网站的一部分

时间:2018-06-10 01:19:04

标签: laravel security authentication

在我的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,以便我可以优雅地将请求重定向到其他详细信息'轮廓。

这适用于查看详细信息,但我现在需要提供更新信息的路由。 (一个用于银行详细信息,一个用于税收等)。我不希望用户必须在每个页面上重新输入密码。

处理此方案的典型方法是什么?通过发布某种令牌,或许?我应该创建一个随机令牌并将其存储为会话中的过期值吗?还有哪些其他选择?

1 个答案:

答案 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');
    }

viewupdate之前检查。这适用于view

  if(session("finance")){
      $user = Auth::user();
      return view('staff.finance-info', compact('user'));
  }

同样检查update