2015-04-25 5 views
1

после входа в систему, я хочу добавить логику перед контроллером, поэтому я написал в промежуточном программном обеспечении. , но я нашел, когда яlaravel5, Auth :: check(), return true, но попытка() возвращает false

dd(\Auth::check()); // it returns true; 

но

$eid = \Auth::user()->eid; //can print the value 
$password = \Auth::user()->password; //can print the value, too 
dd(\Auth::validate(['eid'=>$eid,'password'=>$password])); //it returns false 

весь код:

public function handle($request, Closure $next) 
{ 
    dd(\Auth::check()); 
    $eid = \Auth::user()->eid; 
    $password = \Auth::user()->password; 
    dd(\Auth::validate(['eid'=>$eid,'password'=>$password])); 
    if ($this->auth->guest()) 
    { // not login 
     if ($request->ajax()) 
     { 
      return response('Unauthorized.', 401); 
     } 
     else 
     { 
      return redirect()->guest('auth/login'); 
     } 
    } 

    return $next($request); 
} 
+0

Таблица пользователей, это eid и пароль для двух столбцов – guanyue

ответ

0

Auth::user()->password является хэш пароля, и он не может быть использован в validate() функции. Вы можете использовать только фактический пароль открытого текста в Auth::validate()

+0

Я хочу добавить логику после входа в систему, но я могу получить только пароль хэша, как я могу получить пароль открытого текста? – guanyue

+0

Вы можете получить его, только когда пользователь вводит его. Теперь вы можете сами получить пароль fom hash –

Смежные вопросы