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->YourPasswordField
替换为$this->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::attempt() 可以处理关系吗?