2014-05-02 3 views
5

У меня есть две таблицы в моей базе данных 1: Элементы 3: Пользователи и пытаются войти в систему пользователя, и она работает исправно, но мой вопрос в том, что я не упомянул что из этой таблицы он будет извлекать данные, но он автоматически извлекается из нужной таблицы? Является ли это особенностью Laravel или делаю что-то неправильно? или я не понимаю, почему это происходит?Laravel How Auth :: попытка знает о таблице

Форма

{{ Form::open(array('class'=> 'forming')) }} 

    {{ Form::text('username',null,array('placeholder' => 'Username' ,'class' => 'insi')); }}<br> 
    {{ Form::password('password',array('placeholder'=>'Password', 'class'=>'paswor')); }}<br> 
    {{ Form::submit('SignIn!',array('class'=> 'but-n')); }} 

{{ Form::close() }} 

и AuthController

class AuthController extends Controller{ 

     public function getLogin(){ 
      return View::make('login'); 
     } 

     public function postLogin(){ 
      $rules = array('username'=> 'required', 'password'=>'required'); 

      $validator = Validator::make(Input::all(),$rules); 

      if($validator->fails()){ 
       return Redirect::route('login') 
        ->withErrors($validator); 
      } 

      $auth = Auth::attempt(array(
       'username' => Input::get('username'), 
       'password' => Input::get('password') 
       ), false); 
      if(!$auth){ 

       return Redirect::route('login') 
        ->withErrors(array(
         'Invalid' 
         )); 
      } 

      return Redirect::route('home'); 

     } 
} 

ответ

8

Auth использует модель у вас в file app/config/auth.php:

Если вы используете Красноречивый драйвер для Auth:

/* 
|-------------------------------------------------------------------------- 
| Authentication Model 
|-------------------------------------------------------------------------- 
| 
| When using the "Eloquent" authentication driver, we need to know which 
| Eloquent model should be used to retrieve your users. Of course, it 
| is often just the "User" model but you may use whatever you like. 
| 
*/ 

'model' => 'User', 

Если вы используете драйвер Database:

/* 
|-------------------------------------------------------------------------- 
| Authentication Table 
|-------------------------------------------------------------------------- 
| 
| When using the "Database" authentication driver, we need to know which 
| table should be used to retrieve your users. We have chosen a basic 
| default value but you may easily change it to any table you like. 
| 
*/ 

'table' => 'users', 

Если вам нужно сделать проверку подлинности с использованием более чем одной таблицы, у вас есть несколько вариантов, один из них является использование конструкции, как этот, чтобы продолжить логин:

class Logon { 

    public function loginViaEmail($email, $password) 
    { 
     if ($emailModel = Email::where('email', $email)->first()) 
     { 
      return $this->login($emailModel->user_id, $password); 
     } 

     return false; 
    } 

    public function loginViaName($name, $password) 
    { 
     if ($memberModel = Member::where('name', $name)->first()) 
     { 
      return $this->login($memberModel->user_id, $password); 
     } 

     return false; 
    } 

    public function loginViaId($id, $password) 
    { 
     if ($beingModel = Being::where('id', $id)->first()) 
     { 
      return $this->login($beingModel->user_id, $password); 
     } 

     return false; 
    } 

    public function login($id, $password) 
    { 
     $user = Member::find($id); 

     if(Hash::check($password, $user->password)) 
     { 
      Auth::loginUsingId($id); 

      return true; 
     } 

     return false; 
    } 
} 

И в контроллере теперь вы можете сделать это:

$logon = new Logon; 

if (! $logon->loginViaEmail(Input::get('email'), Input::get('password'))) 
{ 
    return "username or password invalid"; 
} 

return "logged in successfully"; 

или

... 

if (! $logon->loginViaName(Input::get('name'), Input::get('password'))) 

... 
+0

И чуть ниже этой таблицы использовать, если вы используете драйвер базы данных вместо ярко-красного. – ceejayoz

+0

Хорошо, тогда есть Красноречивый и Аут оба имеют одинаковые функции? –

+0

Auth может использовать Eloquent для доступа к вашей таблице пользователей и проверки подлинности, но у них нет одинаковых функций, это совершенно разные вещи. –

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