Home / php / Middleware Session Timeout Laravel

Middleware Session Timeout Laravel

Menentukan berapa lama session user berada didalam aplikasi adalah hal yang penting. Pengaturan session timeout di PHP dapat dilakukan file php.ini tapi rasanya kurang “elegan” untuk melakukan konfigurasinya disana, apalagi itu akan berlaku global.

Di laravel dapat dilakukan pada middleware, middleware tersebut yang kita pasang di routing maka akan memeriksa session berjalan. Kurang lebih inilah script session timeout laravel pada middleware :

namespace App\Http\Middleware;

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

    class SessionTimeout {
    protected $session;
    protected $timeout=1200;

    public function __construct(Store $session){
        $this->session=$session;
    }
    /**
     * 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());
        elseif(time() - $this->session->get('lastActivityTime') > $this->timeout){
            $this->session->forget('lastActivityTime');
            Auth::logout();
            return redirect('login')->with(['warning' => 'You had not activity in '.$this->timeout/60 .' minutes ago.']);
        }
        $this->session->put('lastActivityTime',time());
        return $next($request);
    }

}

Jangan lupa untuk me-register middleware tersebut pada kernel.php

About alfach

Check Also

laravel

Tips : Menggunakan Protokol HTTPS pada Laravel

Ini tips sederhana bagi Anda yang menggunakan framework laravel pada web yang menggunakan protocol HTTPS. ...

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>