[英]Laravel How Auth::attempt knows about Table
I have two tables in my Database 1: Items 3: Users and trying to log in the user and it is working properly, but my question is that i have not mentioned that from which table it will fetch the data, but it is fetching from the desired table automatically? 我的数据库1中有两个表:项目3:用户并尝试登录用户并且它正常工作,但我的问题是我没有提到它将从哪个表中获取数据,但它是从自动需要的表格? Is it a Feature of Laravel or am doing something wrong?
它是Laravel的特征还是我做错了什么? or i don't understand why this is happening?
或者我不明白为什么会这样?
Form 形成
{{ 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() }}
and the AuthController 和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');
}
}
Auth uses the model you have in your file app/config/auth.php
: Auth使用您的
file app/config/auth.php
:
If you are using the Eloquent driver for Auth: 如果您使用Eloquent驱动程序进行身份验证:
/*
|--------------------------------------------------------------------------
| 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',
If you are using the Database driver : 如果您使用的是数据库驱动程序 :
/*
|--------------------------------------------------------------------------
| 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',
If you need to do authentication using more than one table, you have some options, one of them is to use a construction like this one to proceed login: 如果您需要使用多个表进行身份验证,那么您有一些选项,其中一个是使用类似这样的结构来继续登录:
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;
}
}
And in your controller now you can do this: 现在,您可以在控制器中执行此操作:
$logon = new Logon;
if ( ! $logon->loginViaEmail(Input::get('email'), Input::get('password')))
{
return "username or password invalid";
}
return "logged in successfully";
or 要么
...
if ( ! $logon->loginViaName(Input::get('name'), Input::get('password')))
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.