使用 Laravel 的设备推出功能管理多设备会话
Laravel 通过 Auth::logoutOtherDevices()
提供了一个强大的安全功能,使用户能够在除当前设备之外的所有设备上终止会话。此功能对于在处理敏感数据的应用中维护帐户安全特别有价值。
你可以实现此功能以采取主动安全措施,例如应对可疑活动:
public function secureSessions(Request $request)
{
Auth::logoutOtherDevices($request->password);
return back()->with('status', 'All other device sessions terminated');
}
该实现需要 auth.session 中间件来进行适当的会话管理:
Route::middleware(['auth', 'auth.session'])->group(function () {
// Protected routes
});
以下是修改密码的多设备退出的实例:
class SecurityController extends Controller
{
public function updatePassword(Request $request)
{
$validated = $request->validate([
'current_password' => 'required',
'new_password' => 'required|min:8|confirmed'
]);
if (!Hash::check($request->current_password, Auth::user()->password)) {
return back()->withErrors([
'current_password' => 'Invalid password provided'
]);
}
Auth::logoutOtherDevices($request->current_password);
Auth::user()->update([
'password' => Hash::make($request->new_password)
]);
return redirect('/dashboard')
->with('status', 'Password updated and other devices logged out');
}
}
这种方法为用户提供了对其帐户安全的更大控制,同时有助于防止通过遗忘的活动会话进行未经授权的访问。