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)
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)