Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 5.6会话超时时自动注销_Laravel_Session_Timeout_Laravel 5.6 - Fatal编程技术网

Laravel 5.6会话超时时自动注销

Laravel 5.6会话超时时自动注销,laravel,session,timeout,laravel-5.6,Laravel,Session,Timeout,Laravel 5.6,我对laravel框架非常陌生。我正在开发一个应用程序,当用户处于非活动状态5分钟时,它会自动注销。我已经使用了这里的代码:但它似乎不适合我 这是中间件代码: <?php namespace App\Http\Middleware; use Closure; use Auth; use Illuminate\Session\Store; class SessionTimeOutMiddleware { /** * Instance of Session Store * @

我对laravel框架非常陌生。我正在开发一个应用程序,当用户处于非活动状态5分钟时,它会自动注销。我已经使用了这里的代码:但它似乎不适合我

这是中间件代码:

<?php

namespace App\Http\Middleware;

use Closure;
use Auth;
use Illuminate\Session\Store;

class SessionTimeOutMiddleware
{
  /**
  * Instance of Session Store
  * @var session
  */
  protected $session;
  /**
   * Time for user to remain active, set to 300 secs( 5 minutes )
   * @var timeout
  */
  protected $timeout = 300;
  public function __construct(Store $session){
   $this->session        = $session;
   $this->redirectUrl    = 'auth/login';
   $this->sessionLabel   = 'warning';
 }
  /**
   * Handle an incoming request.
   *
   * @param  \Illuminate\Http\Request  $request
   * @param  \Closure  $next
   * @return mixed
  */
 public function handle($request, Closure $next)
 {
   if(! $this->session->has('lastActivityTime'))
   {
     $this->session->put('lastActivityTime', time());
   }
   else if( time() - $this->session->get('lastActivityTime') > $this->getTimeOut())
   {
     $this->session->forget('lastActivityTime');
     Auth::logout();
     return redirect($this->getRedirectUrl())->with([ $this->getSessionLabel() => 'You have been inactive for '. $this->timeout/60 .' minutes ago.']);
   }
   $this->session->put('lastActivityTime',time());
   return $next($request);
 }
 /**
 * Get timeout from laravel default's session lifetime, if it's not set/empty, set timeout to 15 minutes
 * @return int
 */
 private function getTimeOut()
 {
   return  ($this->lifetime) ?: $this->timeout;
 } 
 /**
 * Get redirect url from env file
 * @return string
 */
 private function getRedirectUrl()
 {
   return  (env('SESSION_TIMEOUT_REDIRECTURL')) ?: $this->redirectUrl;
 } 
 /**
   * Get Session label from env file
   * @return string
 */
 private function getSessionLabel()
 {
   return  (env('SESSION_LABEL')) ?: $this->sessionLabel;
 }
Kernel.php中

protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
    \App\Http\Middleware\TrimStrings::class,
    \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    \App\Http\Middleware\TrustProxies::class,
    \App\Http\Middleware\SessionTimeOutMiddleware::class,
];
还有什么我错过的吗?
我做了这么多研究,似乎找不到这个问题的答案。如果有人能帮我解决这个问题,我将非常感激。

将您的驱动程序设置为.env中的数据库

CACHE_DRIVER=database
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=false

希望这有帮助。

在config/auth.php中有一个用于会话注销的变量check it这在web上超时但在移动设备上超时,我的用户在两周后仍然登录到移动设备上,但web工作正常
CACHE_DRIVER=database
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=false