2014-05-02 19 views
5
hakkında daha fazla bilgi

Veritabanımda iki tablo var 1: Items 3: Kullanıcılar ve kullanıcı oturum açmaya çalışıyorum ve düzgün çalışıyor, ama sorum şu ki; hangi tablodan verileri alır, ancak istenen tablodan otomatik olarak getiriliyor? Bu bir Laravel Özelliği mi yoksa yanlış bir şey mi yapıyor? veya bunun neden olduğunu anlamıyorum? FormLaravel How Auth :: attempt Tablo

{{ 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() }} 

ve 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'); 

     } 
} 

cevap

8

Auth

sen sahip modelini kullanır.Web file app/config/auth.php:

Eğer Auth için , Etkili sürücüsünü kullanıyorsanız:

/* 
|-------------------------------------------------------------------------- 
| 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', 

Eğer Veritabanı sürücüsü kullanıyorsanız:

/* 
|-------------------------------------------------------------------------- 
| 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', 

Birden fazla tabloyu kullanarak kimlik doğrulaması yapmanız gerekiyorsa, bazı seçenekler vardır, bunlardan biri devam etmek böyle bir yapıya kullanmaktır

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; 
    } 
} 

Ve denetleyicisi şimdi bunu yapabilirsiniz: giriş

$logon = new Logon; 

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

return "logged in successfully"; 

veya

... 

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

... 
+0

Ve bunun altındaki tablo, Eloquent yerine Veritabanı sürücüsünü kullanıyorsanız. – ceejayoz

+0

Tamam, Eloquent ve Auth'un ikisi de aynı özelliklere sahipler mi? –

+0

Auth, kullanıcı tablonuza erişmek ve onları doğrulamak için Eloquent'i kullanabilir, ancak aynı özelliklere sahip değildirler, bunlar tamamen farklı şeylerdir. –

İlgili konular