2015-02-09 80 views
1

我正在使用ollieread multiauth。我得到了問題的時候,在路線我嘗試使用Laravel多重身份驗證之前不工作

Route::group(['before' => 'auth'], function() 
{ 
Route::get('/onlinetest', array('as'=>'onlinetest', 'uses'=>'[email protected]')); 
Route::get('/quiz', array('as'=>'quiz', 'uses'=>'[email protected]')); 
Route::get('/number', array('as'=>'number', 'uses'=>'[email protected]')); 
Route::get('/word', array('as'=>'word', 'uses'=>'[email protected]')); 

}); 

這裏是我的UserController中:

public function handlelogin() 
{ 
    $today = date("Y-m-d H:i:s"); 

    $userdata = array( 
     'email' => Input::get('username'), 
     'password' => Input::get('password') 
    ); 


    if (Auth::check()) 
    { 
     return Redirect::to('/'); 
    } 

    if(Auth::user()->attempt($userdata, true)) 
    { 
     $user = User::find(Auth::user()->get()->id); 

     // check if user has use his account for test 
     if ($user->status == '0') 
     { 
      Auth::logout(); 
      Session::flush(); 
      return Redirect::to('/login')->with('message', FlashMessage::DisplayAlert('Your Account has been used for test', 'warning')); 
     } 

     $datebirth = Date($user->BirthDate); 
     $dob = Date("Y") - $datebirth; 

     Session::put('current_user', Input::get('username')); 
     Session::put('full_name', $user->FullName); 
     Session::put('gender', $user->Sex); 
     Session::put('dob', $dob); 
     Session::put('user_id', $user->id); 

     // set the user last login 
     $user->last_login = $today; 
     $user->save(); 

     return Redirect::to('/onlinetest')->with('message', 'Login Successfully.'); 

    } 
    else 
    { 
     return Redirect::to('/login')->with('message', FlashMessage::DisplayAlert('Incorrect Username/Password', 'danger')); 
    } 
} 

我的篩選:

<?php 

/* 
|-------------------------------------------------------------------------- 
| Application & Route Filters 
|-------------------------------------------------------------------------- 
| 
| Below you will find the "before" and "after" events for the application 
| which may be used to do any work before or after a request into your 
| application. Here you may also register your custom route filters. 
| 
*/ 

App::before(function($request) 
{ 
    // 
}); 


App::after(function($request, $response) 
{ 
    // 
}); 

/* 
|-------------------------------------------------------------------------- 
| Authentication Filters 
|-------------------------------------------------------------------------- 
| 
| The following filters are used to verify that the user of the current 
| session is logged into this application. The "basic" filter easily 
| integrates HTTP Basic authentication for quick, simple checking. 
| 
*/ 

Route::filter('auth', function() 
{ 
    if (Auth::guest()) 
    { 
     if (Request::ajax()) 
     { 
      return Response::make('Unauthorized', 401); 
     } 
     else 
     { 
      return Redirect::guest('login'); 
     } 
    } 
}); 


Route::filter('auth.basic', function() 
{ 
    return Auth::basic(); 
}); 

/* 
|-------------------------------------------------------------------------- 
| Guest Filter 
|-------------------------------------------------------------------------- 
| 
| The "guest" filter is the counterpart of the authentication filters as 
| it simply checks that the current user is not logged in. A redirect 
| response will be issued if they are, which you may freely change. 
| 
*/ 

Route::filter('guest', function() 
{ 
    if (Auth::check()) return Redirect::to('/'); 
}); 

/* 
|-------------------------------------------------------------------------- 
| CSRF Protection Filter 
|-------------------------------------------------------------------------- 
| 
| The CSRF filter is responsible for protecting your application against 
| cross-site request forgery attacks. If this special token in a user 
| session does not match the one given in this request, we'll bail. 
| 
*/ 

Route::filter('csrf', function() 
{ 
    if (Session::token() !== Input::get('_token')) 
    { 
     throw new Illuminate\Session\TokenMismatchException; 
    } 
}); 

顯然,如果我不使用olliread這條路線是不加工。即使我沒有登錄,我總是可以去網上測試。 有沒有解決方案的路線?或者我的控制器錯了?

謝謝。

+0

您可以發佈您的「用戶」過濾器的代碼嗎?默認的授權過濾器名爲「Auth」。 – Scopey 2015-02-09 03:36:23

+0

嘗試把這個在你的用戶控制器,如果沒有「公共職能__construct(){ $ this-> beforeFilter('auth'); }」 – 2015-02-09 05:21:43

+0

我試過了。它不工作。 – ssuhat 2015-02-09 06:38:47

回答

0

您沒有在路由組中指定的「用戶」過濾器。嘗試將路由組中的「用戶」換成「身份驗證」:

<?php 
Route::group(['before' => 'auth'], function() 
{ 
    // ... 
}); 
+0

我將用戶更改爲身份驗證。但我仍然可以在沒有登錄的情況下進入測驗。 (我試圖註銷並關閉瀏覽器)。 – ssuhat 2015-02-09 04:18:48