Auth::attempt 将默认密码更改为 DB 中的默认字段

Posted

技术标签:

【中文标题】Auth::attempt 将默认密码更改为 DB 中的默认字段【英文标题】:Auth::attempt changing default password to default field like in DB 【发布时间】:2013-10-10 16:49:48 【问题描述】:

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

目前我有这个sn-p:

$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 使用我的自定义密码字段?

【问题讨论】:

你有一个Login 和一个User 模型链接到tbl_login 表? 是的,因为用户在那里是标准的,但我刚刚删除了登录模型,但同样的问题正在发生 【参考方案1】:

您无法更改它,但您可能可以通过为密码字段创建新的修改器来解决此问题:

<?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;
    



【讨论】:

我已经在我的用户类中添加了这个方法,但实际上它仍然是一样的。什么也没有变。我在表中的密码字段是“PASSWORD”,所以我将$this-&gt;YourPasswordField 替换为$this-&gt;PASSWORD【参考方案2】:

我找到了解决办法

User model方法中getAuthPassword()

public function getAuthPassword()

     return $this->attributes['passwordFieldinYourTable'];//change the 'passwordFieldinYourTable' with the name of your field in the table

就是这样:)

【讨论】:

我的用户表有以下数据库结构fld_ID, fld_Username, fld_Password 是否可以在用户文件中进行更改?以及如何? 帮助很大。投票让那些没有将密码字段命名为“密码”的人知道该怎么做。 乐于助人! @MehdiHosseini 仍然需要帮助吗?刚看到你的评论。

以上是关于Auth::attempt 将默认密码更改为 DB 中的默认字段的主要内容,如果未能解决你的问题,请参考以下文章

laravel auth认证

将密钥库密码从无密码更改为非空密码

Laravel Auth::attempt 会话过期

Laravel Auth::attempt() 可以处理关系吗?

Laravel 4 - Auth::attempt() 不工作

Auth::attempt 值始终为 false