2016-08-16 11 views
13

サンプル・データこの表にすると以下のようになります。は、セッションテーブルに重複したユーザーのセッションレコードを避けるためにしよう:Laravel

enter image description here

テーブル内に存在する複数の重複したユーザーのセッションレコードがあります。

ベンダー\ laravelの\枠組み\ SRC \を照らし\セッション\ DatabaseSessionHandler.php上記のファイルパスで

、我々は法の下に持っているそれは、セッションをチェック

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

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

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

    $this->exists = true; 
} 

ID。

質問

は、私がセッションテーブルに重複したユーザー・セッション・レコードの作成を避けるすることはできますか?セッション構成ファイルでこれを行うフラグはありますか?

+1

これにより、ユーザーはさまざまなデバイスやブラウザからログを取ることができるため、電話やコンピュータなどからアプリケーションにアクセスできます。彼がログインしたときに他のすべてのインスタンスからユーザーをログアウトさせたいのですか? –

+0

私はちょうど1つのセッションを維持したいです。 – Pankaj

+0

btwこれは役に立ちますか? http://stackoverflow.com/questions/33311771/laravel-and-multi-sessions-from-the-same-browser –

答えて

1

あなたの味方に間違いがあるようですが、このようなものでなければなりませんか? :あなたの質問から

if (! $this->exists) { 
    $this->read($sessionId); 
}else{ 

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

申し訳ありませんが、私はこのコードがすでに私の質問にあると同じだと思いますか? – Pankaj

0

、あなただけのあなたのクロム、あなたは、Firefoxからログインした後ならば、あなたはすでにChromeからlogined場合1人のユーザーが1つのデバイスのみ、例からログインできることを意味し、データベースに1つのユーザセッションを残したいですログインステータスは削除されます。

public function authenticated(Request $request,User $user){ 
    $previous_session = $user->session_id; 

    if ($previous_session) { 
    \Session::getHandler()->destroy($previous_session); 
    } 

    Auth::user()->session_id = \Session::getId(); 
    Auth::user()->save(); 
    return redirect()->intended($this->redirectPath()); 
} 

この関数は、ログインする前に、データベースからprviousセッションをDestoryはします:これはあなたがApp\Http\Controllers\Auth\AuthControllerで関数を記述することができますacheiveする

。 詳細については、特性を確認する必要があります。Illuminate\Foundation\Auth\AuthenticatesUsers

関連する問題