如何在laravel身份验证中处理列,用户名和密码的自定义名称

时间:2014-02-01 13:39:39

标签: laravel laravel-4

我有一个名为logindetials的表,其中包含以下列

Login_Id | Login_Name | Login_Passwor | Login_Email | .......

当我尝试进行身份验证时,会产生错误,如下所示

Illuminate \ Database \ QueryException
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'username' in 'where 
clause' (SQL: select * from `logindetails` where `username` = admin limit 1)

我在config / auth.php

中尝试了这些
'table' => 'logindetails',
'username' => 'Login_Name',
'password' => 'Login_Passwor', 

和models / User.php

protected $fillable=array('Login_Name','Login_Passwor','Login_Email',...);
protected $primaryKey = "Login_Id";
protected $table = 'logindetails';
protected $hidden = array('Login_Passwor');
public function getAuthIdentifier()
{
    return $this->getKey();
}
public function getAuthPassword()
{
    return $this->Login_Passwor;
}
public function getReminderEmail()
{
    return $this->Login_Email;
}

以及登录控制器

if (Input::server("REQUEST_METHOD") == "POST") {

  $validator=Validator::make
            (Input::all(), ["userid" => "required","password" => "required"]);
  if ($validator->passes()) {

     $credentials = [
          "Login_Name" => Input::get("userid"),
          "Login_Passwor" => Input::get("password")];
     if (Auth::attempt($credentials)) {
          return Redirect::route("/");
     }

  }
  $data["errors"] = new MessageBag(["password" => 
                     ["Username and/or password invalid."]]);
  $data["Login_Name"] = Input::get("userid");
  return Redirect::route("login")->withInput($data);

}

但没有raksha。 请有人帮我解决这个问题

2 个答案:

答案 0 :(得分:5)

实际上还有其他方面可以保留自定义密码字段。

请执行以下操作:

假装您希望自定义密码密码为“Login_Passwor”。为此,只需在models \ User.php中添加一个函数,如下所示

public function getAuthPassword() 
{
   return $this->Login_Passwor; 
}

现在,在您的登录控制器中,只需对Auth进行此更改:尝试

$credentials = ["Login_Name" => Input::get("userid"),
                "password" => Input::get("password")];

if (Auth::attempt($credentials)) 
{
    return Redirect::route("/");
}

此方法肯定会有效,已经尝试过了

答案 1 :(得分:3)

进行身份验证时,需要将用户名更改为Login_Name,但密码需要保留密码:

Auth::attempt( array('Login_Name' => $username, 'password' => $password) )

请查看此文件,以便更好地了解在进行身份验证时如何检索用户:https://github.com/illuminate/auth/blob/master/EloquentUserProvider.php#L60

相关问题