2016-03-26 5 views
0

laravel-4.2で複数のテーブルを使用して複数認証を実装していますので、ログインビューは3つの値を投稿します.1番目はユーザ名、2番目はパスワード、3番目は値ですドロップダウンは、Auth :: <と同じ値であり、要求されたテーブルでログインするのに役立つ第3の値>() - >試行、そして3番目の値がnullでAuth :: user() - >試行が来たらつかいます。フィルタで複数のテーブルセッションをユーザログアウトまで設定したLaravel Multi-Aiuth

<?php 
return array(
    'multi' => array(
     'BSc' => array(
      'driver' => 'database', 
      'table' => 'bsc', 
      'model' => 'BSc' 
     ), 
     'user' => array(
      'driver' => 'eloquent', 
      'model' => 'User', 
      'table' => 'users' 
     ) 
    ), 
    'reminder' => array(
     'email' => 'emails.auth.reminder', 
     'table' => 'password_reminders', 
     'expire' => 60, 
    ), 
); 

編集:postLogin @

Route::filter('students', function() 
{ 
    if (Auth::BSc()->guest()) 
    { 
     if (Request::ajax()) 
     { 
      return Response::make('Unauthorized', 401); 
     } 
     else 
     { 
return Redirect::guest('/'); } 
    } 
}); 

Route::filter('auth.basic', function() 
{ 
    if (Auth::user()->guest()) 
    { 
     if (Request::ajax()) 
     { 
      return Response::make('Unauthorized', 401); 
     } 
     else 
     { 
return Redirect::guest('/'); } 
    } 
}); 

がUserControllerで:

public function postLogin() 
{ 
    $username = Input::get('username'); 
    $model_name = Input::get('course'); 
    $password = Input::get('password'), 

    $credentials = array(
    'username' => $username, 
    'password' => $password, 
); 

    //class exists(Model exist?) 
    if(!(is_null($model_name))){ 
    if(class_exists($model_name)){ 
    if(Auth::$model_name()->attempt($credentials)) 
    { 
     return Redirect::to('desk')->with('stream',$model_name); 
    } 
    else 
    { 
     echo "Invalid UserName"; 
    } 
    }else{ 
    echo "No model is created for ".$model_name; 
    } 
    }else{ 
    if(Auth::user()->attempt($credentials)){ 
     return Redirect::intended('desktop')->with('stream',"Test"); 
    } 
    else{ 
     echo "Username is invalid";  
     } 
    } 
私は 'ollieread' pakage 認証の実装コードを使用していますマルチ認証のための は

auth.phpです

postLogin機能では、ルート "デスク"変数$ model_nameをセッションに保存して、ユーザーがどのテーブルから来たものかを知るのに役立ちます

ログイン後に/ model/desktopにリダイレクトすると、$ model_nameは正しい値を示します。

<?php 
$stream = Session::get('stream'); 
var_dump($stream); 
?> 

、で机ビューで値を取得する今では、リダイレクトを渡された正しい値をダンプしますが、私はページを更新すると値がnullになります。

ユーザーがログアウトするまでこの値を設定できたら、その$ stream値でログアウトすると便利です。

も使用できます。ユーザーがログアウトするまで、だから、どのようにセッションを設定することができます::(「流れ」)を取得

Auth::$stream()->username 

は、一定値はありますか? 私は正しく説明したと思います。

+0

Session値を保存する必要がある場合は、Session :: putを使用できます。 – Vagabond

+0

はい私はセッションに変数を入れて/ deskにリダイレクトする必要がありますどのように私はcorrent方法を得ていませんでした。 –

+0

右。あなたのログアウト機能も教えてくれますか? – Vagabond

答えて

0

次のようにあなたがlaravel 4のセッションファサードを使用して、セッション値を格納するために:あなたが使用するまで値は名前(キー)「ストリーム」でのセッションに依然として存在する

//class exists(Model exist?) 

    if(!(is_null($model_name))){ 
    if(class_exists($model_name)){ 
    if(Auth::$model_name()->attempt($credentials)) 
    { 
     Session::put('stream', $model_name); 
     return Redirect::to('desk'); 
    } 
    else 
    { 
     echo "Invalid UserName"; 
    } 
    }else{ 
    echo "No model is created for ".$model_name; 
    } 
    }else{ 
    if(Auth::user()->attempt($credentials)){ 
     return Redirect::intended('desktop')->with('stream',"Test"); 
    } 
    else{ 
     echo "Username is invalid";  
     } 
    } 

Session :: forget( 'key')またはSession :: flush()(あなたのログアウト関数で使用できます)。 this pageに行くこともできます。

これがあなたの問題を解決することを願っています。もしそうでなければ教えてください。

関連する問題