Auth ::尝试将默认密码更改为默认字段,如DB中所示

时间:2013-10-03 20:18:04

标签: database authentication laravel eloquent

我有一个表单,我正在尝试使用Laravels Auth方法登录。

目前我有这个片段:

$input = Input::all();

$login = Auth::attempt([
'username' => $input['username'],
'password' => $input['password']
]);

if($login){
return "Logged in";
}

dd('problem');

但即使在输入正确的凭据后,我也会看到“问题”

models / User.php 中我已将我的表名更改为tbl_login(就像我在数据库中一样),这是我在其中所做的唯一更改

在我的登录模型中我有

class Login extends Eloquent {
protected $guarded = array();
protected $table = "tbl_login";
protected $primaryKey = "pk_loginID";

public static $rules = array();
}

我也检查了这个topic,但没有真正的帮助,我希望你们现在能帮助我。

正如信息和旁注:Db中的表名= tbl_login

主键字段为pk_loginID

用户名字段=用户名

密码字段=密码

我忘记了什么或者我做错了什么?

修改

我发现问题更具体,但不是解决方案。数据库中的我的密码字段的名称不是Laravel使用的默认密码字段。我怎么能说Laravel使用我的自定义密码字段?

2 个答案:

答案 0 :(得分:1)

我找到了解决方案

方法User model

中的getAuthPassword()
public function getAuthPassword()
{
     return $this->attributes['passwordFieldinYourTable'];//change the 'passwordFieldinYourTable' with the name of your field in the table
}

就是这样:))

答案 1 :(得分:0)

你不能改变它,但你可以通过在密码字段中创建新的mutators来解决这个问题:

<?php

use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;

class User extends Eloquent implements UserInterface, RemindableInterface {

    ...

    public function getPasswordAttribute()
    {
        return $this->YourPasswordField;
    }

    public function setPasswordAttribute($password)
    {
        $this->YourPasswordField = $password;
    }


}