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
谢谢
我在 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
谢谢