我有一个名为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。 请有人帮我解决这个问题
答案 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