我在一个中间件(对于Laravel网络应用程序)中覆盖session.timeout
值,但它似乎没有影响会话超时。虽然如果我调试它显示值我已覆盖。
Config::set('session.lifetime', 1440);
默认值如下:
'lifetime' => 15,
我正在处理的网站对于大多数用户而言会话生命周期非常短,但对于选定的用户,我希望提供延长的会话生命周期。
似乎实现动态lifetime
值的唯一方法是在会话启动之前设置中间件的值。否则为时已晚,因为应用程序SessionHandler已经使用默认配置值进行了实例化。
namespace App\Http\Middleware;
class ExtendSession
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, $next)
{
$lifetime = 2;
config(['session.lifetime' => $lifetime]);
return $next($request);
}
}
然后在kernel.php文件中,在StartSession
之前添加此类。
\App\Http\Middleware\ExtendSession::class,
\Illuminate\Session\Middleware\StartSession::class,
您的用户登录时会出现问题,之后您将更改会话生存期配置变量。变量已针对当前请求进行了更改,但用户在登录时具有指定生命周期的会话。
您必须更改登录方法。并执行以下步骤:
config(['session.lifetime' => 1440]);
我建议使用帮助器动态更改配置
config(['session.lifetime' => 1440]);