2016-01-01 2 views
1

Что это?Force delete Записи сеанса для текущего входа в систему Пользователь: Laravel 5.2

Я использую таблицу Sessions, в которой хранятся текущие сеансы входа пользователя в таблицу Sessions.

В чем проблема?

Вместо того, чтобы вручную удалять запись после входа в систему, есть ли способ заставить Laravel 5.2 удалить все текущие связанные с пользователем записи на основе user_id?

Есть ли что-нибудь делать с изменением 'lottery' => [2, 100], по 'lottery' => [1, 1],?

+0

Войти обновляет его/обновляет его , –

+0

Я имею в виду, что он продолжает добавлять новые записи в таблицу 'session'. Есть ли способ заставить «Laravel 5.2» удалить все текущие связанные с пользователем записи на основе 'user_id'? –

+0

ну простой запрос на удаление на основе user_id!? –

ответ

0

Я не уверен, что это правильный подход для этого в случае многопользовательских логинов. Ниже мой код. Пожалуйста, обеспечить обратную связь

создал модель

class Session_Model extends Model 
{ 
    protected $table = "sessions"; 
} 

** Модифицированный метод для записи/обновить запись в таблице Sessions. Вы можете найти эту Mothod в этом классе: **

\ поставщика \ Laravel \ Framework \ \ Осветите в исходные тексты \ Session \ DatabaseSessionHandler.php


public function write($sessionId, $data) 
{ 
    $payload = $this->getDefaultPayload($data); 
    if ($this->exists) { 


     /*****Remove other then current login in user Session*****/ 
     \App\Models\User\Session_Model 
       ::where('id', '!=', $sessionId) 
       ->where('user_id', '=', $payload['user_id']) 
       ->delete(); 


     $this->getQuery()->where('id', $sessionId)->update($payload); 
    } else { 
     $payload['id'] = $sessionId; 

     /********Remove all previous sessions of a user***************/ 
     \App\Models\User\Session_Model 
       ::where('user_id', '=', $payload['user_id']) 
       ->delete(); 


     $this->getQuery()->insert($payload); 
    } 

    $this->exists = true; 
}