Laravel 重设 Session ID

hefengbao 发布于 2024.09.24

在 Web 应用中,Session ID 用户维护浏览器(客户端)和服务器端的连接状态,用户登录时选择“记住我”,下次打开时默认是登录状态。出于一些安全因素的考虑,可以通过重新生成 Session ID 而断开连接:比如用户修改密码后要求重新登陆,一个账号在新的浏览器登陆后强制其他浏览器的登陆状态下线。

手动生成 Session ID

$request->session()->regenerate();

销毁 Session (ID)

$request->session()->invalidate();

案例:

用户修改密码后重新生成 Session ID:

public function changePassword(Request $request)
{
    $request->validate([
        'current_password' => ['required', 'current_password'],
        'new_password' => ['required', 'confirmed', 'min:8'],
    ]);

    $user = $request->user();
    $user->update([
        'password' => Hash::make($request->new_password),
    ]);

    // Regenerate the session ID
    $request->session()->regenerate();

    return redirect()->route('profile')
        ->with('status', 'Password changed successfully.');
}

使用 remember token 认证后,重新生成 Session ID:

if (Auth::viaRemember()) {
    $request->session()->regenerate();
}

参考:

https://www.harrisrafto.eu/enhancing-security-with-session-id-regeneration-in-laravel/

Laravel    Laravel   LaravelTips  

上一篇:Laravel 预加载(Eager Loaded )限定条数

下一篇:Laravel Blade:@stack

有 0 条评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注