2015-02-09 24 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