2014-05-02 11 views
5

के बारे में जानता है मेरे पास मेरे डेटाबेस 1 में दो टेबल हैं: आइटम 3: उपयोगकर्ता और उपयोगकर्ता में लॉग इन करने का प्रयास कर रहा है और यह ठीक से काम कर रहा है, लेकिन मेरा सवाल यह है कि मैंने उल्लेख नहीं किया है कि किस तालिका से यह डेटा लाएगा, लेकिन यह वांछित तालिका से स्वचालित रूप से ला रहा है? क्या यह लैरावेल का एक फ़ीचर है या कुछ गलत कर रहा है? या मुझे समझ में नहीं आता कि यह क्यों हो रहा है?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

प्रमाणीकरण मॉडल आप में है का उपयोग करता है अपने file app/config/auth.php:

आप प्रमाणीकरण के लिए सुवक्ता ड्राइवर उपयोग कर रहे हैं:

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

आप डाटाबेस ड्राइवर उपयोग कर रहे हैं:

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

और नीचे की ओर उपयोग करने के लिए तालिका है, यदि आप eloquent one के बजाय डेटाबेस ड्राइवर का उपयोग कर रहे हैं। – ceejayoz

+0

ठीक है तो एलोक्वेंट और एथ दोनों में एक ही विशेषताएं हैं? –

+0

एथ आपके उपयोगकर्ता तालिका तक पहुंचने और उन्हें प्रमाणित करने के लिए एलोक्वेंट का उपयोग कर सकता है, लेकिन उनके पास समान विशेषताएं नहीं हैं, ये पूरी तरह से अलग-अलग चीजें हैं। –

संबंधित मुद्दे