Abort(404) 使我的 Cookie::get('...') 成为一个随机散列而不是它应该是的
Abort(404) makes my Cookie::get('...') to a random hash instead of what it's supposed to be
当我使用 laravel 中止 404 时,或者当它本身是 404 时,我的 Cookie::get('department') 将自身从:
转换
"Oslo"
到
"eyJpdiI6IjdOaDJSZ29jWXd2OHhmbzVNNHNBemc9PSIsInZhbHVlIjoiYmdoOVdWN2RFRUdjNlhEa2w4cUl1Zz09IiwibWFjIjoiM2NiNWRhOGIyNWMzYzg4Mzc2ZTM2YmZlNTFkNmY4MWZkNGM3ODE3ZmJhMDhkZWRmNGY1ZDgxNDMzYjhmYmY1NyJ9 ◀eyJpdiI6IjdOaDJSZ29jWXd2OHhmbzVNNHNBemc9PSIsInZhbHVlIjoiYmdoOVdWN2RFRUdjNlhEa2w4cUl1Zz09IiwibWFjIjoiM2NiNWRhOGIyNWMzYzg4Mzc2ZTM2YmZlNTFkNmY4MWZkNGM3ODE3ZmJhMDhk ▶"
它适用于所有其他页面。
因为我使用 cookie 来获取所选部门的正确联系信息,所以它无法在我的数据库中找到那个长字符串(它应该是“Oslo”)我每次页面 404 时都会收到错误
Laravel 在所有请求中默认使用 EncryptCookie middleware。你可以在中间件的$except
属性中指定不应该加密的cookies:
class EncryptCookies extends Middleware
{
protected $except = [
'department'
];
}
接受的答案存在安全风险,因为您只是禁用了您可能不想要的 cookie 的加密。
真正的原因是404页面不是网络路由中的页面。
中间件列表 web
未使用。
如果您想在 404 页面上使用加密 cookie,您需要将 \App\Http\Middleware\EncryptCookies::class,
添加到 kernel.php
中的全局中间件列表
app/Http/Kernel.php:
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
\App\Http\Middleware\EncryptCookies::class, // ADD THIS LINE
];
当我使用 laravel 中止 404 时,或者当它本身是 404 时,我的 Cookie::get('department') 将自身从:
转换"Oslo"
到
"eyJpdiI6IjdOaDJSZ29jWXd2OHhmbzVNNHNBemc9PSIsInZhbHVlIjoiYmdoOVdWN2RFRUdjNlhEa2w4cUl1Zz09IiwibWFjIjoiM2NiNWRhOGIyNWMzYzg4Mzc2ZTM2YmZlNTFkNmY4MWZkNGM3ODE3ZmJhMDhkZWRmNGY1ZDgxNDMzYjhmYmY1NyJ9 ◀eyJpdiI6IjdOaDJSZ29jWXd2OHhmbzVNNHNBemc9PSIsInZhbHVlIjoiYmdoOVdWN2RFRUdjNlhEa2w4cUl1Zz09IiwibWFjIjoiM2NiNWRhOGIyNWMzYzg4Mzc2ZTM2YmZlNTFkNmY4MWZkNGM3ODE3ZmJhMDhk ▶"
它适用于所有其他页面。
因为我使用 cookie 来获取所选部门的正确联系信息,所以它无法在我的数据库中找到那个长字符串(它应该是“Oslo”)我每次页面 404 时都会收到错误
Laravel 在所有请求中默认使用 EncryptCookie middleware。你可以在中间件的$except
属性中指定不应该加密的cookies:
class EncryptCookies extends Middleware
{
protected $except = [
'department'
];
}
接受的答案存在安全风险,因为您只是禁用了您可能不想要的 cookie 的加密。
真正的原因是404页面不是网络路由中的页面。
中间件列表 web
未使用。
如果您想在 404 页面上使用加密 cookie,您需要将 \App\Http\Middleware\EncryptCookies::class,
添加到 kernel.php
app/Http/Kernel.php:
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
\App\Http\Middleware\EncryptCookies::class, // ADD THIS LINE
];