php - Laravel 8:在中间件中设置会话生命周期
问题描述
我发现了一些说明如何在中间件中动态设置会话生命周期。我创建了一个中间件,它根据路由名称设置配置“session.lifetime”,并将其放在我所有中间件的顶部,以便在调用 StartSession 之前首先调用它。但无论我尝试什么,Laravel 总是采用 env 文件中定义的默认会话生命周期。
知道问题可能是什么吗?Laravel 8(或 7)有什么变化吗?我找到的必须是 Laravel 5 的东西,但我无法找到更多关于它的最新信息..
这就是我的中间件的样子:
/**
* Set the session lifetime for the current request.
*
* @param Request $request current request
* @param Closure $next next handler
* @param int|null $lifetimeMin lifetime in minutes.
*
* @return mixed
*/
public function handle(Request $request, Closure $next, ?int $lifetimeMin = null)
{
if ($lifetimeMin !== null) {
Config::set('session.lifetime', $lifetimeMin);
} elseif (str_starts_with($request->route()->getName(), 'api.')) {
$apiLifetime = Config::get('session.lifetime_api', 525600);
Config::set('session.lifetime', $apiLifetime);
} elseif (str_starts_with($request->route()->getName(), 'admin.')) {
$adminLifetime = Config::get('session.lifetime_admin', 120);
Config::set('session.lifetime', $adminLifetime);
}
return $next($request);
}
坦克为您提供帮助!
解决方案
看看这里:https ://laravel.com/docs/8.x/configuration
Laravel 8 正在使用这样的配置助手:
//To set configuration values at runtime, pass an array to the config helper:
config(['app.timezone' => 'America/Chicago']);
有点像这样?
if ($lifetimeMin !== null) {
config(['session.lifetime' => $lifetimeMin]);
} elseif (str_starts_with($request->route()->getName(), 'api.')) {
$apiLifetime = config('session.lifetime_api', 525600);
config(['session.lifetime' => $apiLifetime]);
} elseif (str_starts_with($request->route()->getName(), 'admin.')) {
$adminLifetime = config('session.lifetime_admin', 120);
config(['session.lifetime' => $adminLifetime]);
}
此外 .. 默认配置从 env 文件中检索值。我可以想象旧的 Config::set 不能再重载它了。您是否尝试过不使用 env() 方法设置配置?
'lifetime' => env('SESSION_LIFETIME', 120),
有点像这样
'lifetime' => 120,
推荐阅读
- ruby-on-rails - 如何使用 Netflix fast_jsonapi 与 Mongoid 关系
- php - 会话设置但不允许访问管理页面
- javascript - 如何在selectize js中为多个选择元素使用create
- batch-file - 如何检查是否存在带有通配符的目录是否存在并将该文件夹复制到另一个位置?
- php - php-mbstring 不会安装在 CentOS 7 和 PHP 7.1.21 上
- javascript - 为什么我的链接不能右对齐,也不能在社交图标之间显示空间?
- java - 安装 Apache POI 时遇到问题
- kotlin - 从 InputStream 中读取的挂起函数
- android - 我是否需要迁移才能将类型 Int 更改为 Long?
- c - 在这个 C 代码中 goto 语句是不可避免的吗?