laravel 4自定义命名密码列

Das*_*oot 5 php database laravel

所以我发现了一些问题,说你必须覆盖getAuthPassword()以从数据库中提供密码列的自定义名称.尝试将此方法与数据库中的列同名,并且无法正常工作.它仍然会发出此错误:未定义的索引:密码.

这是认证:

if (Auth::attempt(Input::only('user_displayName'), Input::get('user_password')))
Run Code Online (Sandbox Code Playgroud)

尝试在表单和控制器中将user_password更改为密码无效.

所以问题是,如果我在名为"user_password"的数据库中有一个列,是否有办法让Auth工作?

PS检查了我发现的每个旧解决方案

编辑

用户表的结构:

+======================+
|        User          |
+======================+
|       user_id        |
+----------------------+
|   user_displayName   |
+----------------------+
|     user_fname       |
+----------------------+
|      user_lname      |
+----------------------+
|      user_email      |
+----------------------+
|     user_password    |
+----------------------+
|      created_at      |
+----------------------+
|      updated_at      |
+----------------------+
Run Code Online (Sandbox Code Playgroud)

Jar*_*zyk 7

tldr; 只要您的用户模型正确实现了界面,您就可以将密码字段命名为您喜欢的任何名称.

但是,您无法将不同的数组键传递给该Auth::attempt方法 - 只有password索引可以存在

首先,你做错了 - 你需要传递一组凭证作为第一个参数:

if (Auth::attempt(Input::only('user_displayName', 'user_password')))
Run Code Online (Sandbox Code Playgroud)

接下来,遗憾的是,Eloquent提供程序password在代码中具有硬编码的数组索引,因此您无法传递user_password给该attempt方法.

所以这就是你需要的:

$credentials = Input::only('user_displayName');
$credentials['password'] = Input::get('user_password');

if (Auth::attempt($credentials))

// or simply rename the input in your form to password and:
if (Auth::attempt(Input::only('user_displayName', 'password')))
Run Code Online (Sandbox Code Playgroud)