在 Laravel 6 中,将 session 实现替换为对应的 cookie 实现

1、在程序中,是否为预览模式,是基于 session 实现的。但是当用户退出登录时,也会自动退出预览模式。如图1

图1

2、退出预览模式的表现便是页面底部的预览横幅已经消失。如图2

图2

3、参考:Session 重新生成 Session ID ,如果你使用了内置函数 LoginController,Laravel 会自动重新生成身份认证中的 Session ID。最终决定替换为对应的 cookie 实现

4、替换的代码实现依次如下

// $request->session()->forget(XxxService::THEME_PREVIEW_ID);
Cookie::queue(Cookie::forget(XxxService::THEME_PREVIEW_ID));
// $request->session()->put(XxxService::THEME_PREVIEW_NAME, $themePreviewName);
Cookie::queue(Cookie::make(XxxService::THEME_PREVIEW_NAME, $themePreviewName));

// $request->session()->forget([XxxService::THEME_PREVIEW_ID, XxxService::THEME_PREVIEW_NAME]);
Cookie::queue(Cookie::forget(XxxService::THEME_PREVIEW_ID));
Cookie::queue(Cookie::forget(XxxService::THEME_PREVIEW_NAME));

$request->session()->has(XxxService::THEME_PREVIEW_NAME);
Cookie::has(XxxService::THEME_PREVIEW_NAME);

$request->session()->get(XxxService::THEME_PREVIEW_NAME);
Cookie::get(XxxService::THEME_PREVIEW_NAME);

5、测试功能,符合预期,在跳转后的网页的 Cookie 中已经存在新设置的 Key。如图3

图3

永夜