2014-10-31 166 views
3

创建postSignIn方法,并希望验证: 电子邮件,密码,verifiedFlag 首先是没有问题创造postSignIn方法,如:Laravel验证登录解决方案

public function postSignIn(){ 
    if(Auth::attempt(array('email' => Input::get('email'),'password' => Input::get('password'),'verifiedFlag'=>1))){ 
      return Redirect::route('home-view'); 
    } 
    else{ 
     return "Email/Password wrong or Your Account not verified by Admin"; 
    } 
} 

但现在我尽量做到更用户通过独立的警报友好的

  • 帐户未验证,并
  • 电子邮件/密码错误

,现在我尽量让这样的:

if(Auth::attempt(array('nim' => Input::get('nim'),'password' => Input::get('password')))){ 
     Auth::logout(); 
     if(Auth::attempt(array('nim' => Input::get('nim'),'password' => Input::get('password'),'verified' => 1))){ 
      return Redirect::route('home-view'); 
     } 
     else{ 
      return "Your Account not verfied. Please wait until admin verified your account or contact your admin"; 

     } 
    } 
    else{ 
     return "NIM/Password wrong"; 
    } 

没有什么问题,但我想我需要其他的解决方案,以便验证不需要登录(未遂)两次

回答

3

你可以使用validate方法。这将工作:

public function postSignIn(){ 
    if(Auth::attempt(array('email' => Input::get('email'),'password' => Input::get('password'),'verifiedFlag'=>1))){ 
      return Redirect::route('home-view'); 
    } 
    elseif(Auth::validate(array('email' => Input::get('email'),'password' => Input::get('password')))){ 
      return "Your Account not verified by Admin"; 
    } 
    else 
    { 
     return "Email/Password wrong"; 
    } 
} 
+0

我只是意识到我错误的放置IF语句._。不管怎样,谢谢 :) – GandhyOnly 2014-11-02 04:31:11

0

过滤器是要走的路。解决这个问题很简单,很简单,参见下面的示例。

如果用户在任何时候都处于非活动状态,它将注销用户, 您可以使用会话flash消息重定向用户,您的登录代码将按原样运行。

Route::filter('auth', function() 
{ 
    if (Auth::guest()) 
    { 
     if (Request::ajax()) 
     { 
      return Response::make('Unauthorized', 401); 
     } 
     else 
     { 
      return Redirect::guest('login'); 
     } 
} 
else 
{ 
    // If the user is not active any more, immidiately log out. 
    if(Auth::check() && !Auth::user()->verifiedFlag) 
    { 
     Auth::logout(); 
     Session::flash('message','Your account is not active, please contact your administrator    to active your account'); 

     // redirect to login page 
     return Redirect::to('/'); 
    } 
} 
});