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

Sal*_*301 0 password-protection laravel

我在 Laravel 中有一条秘密路线,应该位于密码确认保护后面(就像当您要删除存储库或添加协作者时的 GitHub sudo 模式)

\n\n
Route::get(\'/secret\', \'DiariesController@index\')->middleware([\'auth\', \'verified\']);\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

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

\n\n

这是我到目前为止所尝试过的

\n\n

DiariesController

\n\n
public function index()\n{\n    if (session()->has(\'sudo\')) {\n        return view(\'secret.diaries\');\n    }\n    auth()->logout();\n    return redirect(\'/login\');\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

并且在LoginController

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

但这基本上没有任何作用,我必须以sudo某种方式手动使 \xc2\xa0session 密钥过期

\n\n

有没有更简单的方法来实现这一目标?

\n

Sal*_*far 5

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

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

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

谢谢