Laravel中的特定路由如何要求重新输入密码确认?

How to require re-entering password confirmation for specific routes in Laravel?

我在 Laravel 中有一个秘密路由,它应该位于密码确认保护之后(就像 GitHub sudo 模式,当你要删除一个 repo 或添加一个合作者时)

Route::get('/secret', 'DiariesController@index')->middleware(['auth', 'verified']);

但已经通过身份验证的用户可以轻松访问路由

我想要的是防止对用户设备进行物理访问的额外保护层

这是我目前尝试过的方法

DiariesController

public function index()
{
    if (session()->has('sudo')) {
        return view('secret.diaries');
    }
    auth()->logout();
    return redirect('/login');
}

并且在LoginController

/**
 * The user has been authenticated.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  mixed  $user
 * @return mixed
 */
protected function authenticated(Request $request, $user)
{
    session(['sudo' => true]);
}

但这基本上什么都不做,我必须以某种方式手动使 sudo 会话密钥过期

有没有更简单的方法来实现这个?

Laravel v6.2.0 版本附带 new password confirmation feature。此功能允许您将 password.confirm middleware 附加到您希望用户重新确认其密码的路由。考虑到您的代码,您的路线如下所示。

Route::get('/secret', 'DiariesController@index')->middleware(['auth', 'verified','password.confirm']);

如果您尝试访问该路线,系统将提示您确认密码,类似于您在 GitHub 等其他应用程序中看到的情况。 欲了解更多信息,您可以访问 this

谢谢