我最近进入Laravel,并且想为我的Web应用程序创建一个用户系统。
我使用php artisan make:auth来创建标准的Laravel身份验证视图/控制器。现在,我想更改用户表的列名。我想将名称重命名为userName,将电子邮件重命名为userEmail,将密码重命名为userPassword。
注册工作正常,但是登录有问题。
完全按照http://www.lasselaursen.com/post/changing-standard-fieldcolumn-names-in-laravel-5s-default-users-table中的说明进行了一些小的调整之后,例如,我取代了LoginController中的登录,而不是覆盖AuthController中的postLogin。
现在尝试登录时,总是会显示调试窗口:未定义的索引:.. \ vendor \ laravel \ framework \ src \ Illuminate \ Auth \ GenericUser.php中的密码
我如下重写了User.php类中的getAuthPassword()函数
public function getAuthPassword()
{
return $this->userPassword;
}
我在LoginController上的登录功能如下:
public function login(Request $request)
{
$this->validate($request, [
'userEmail' => 'required|email', 'password' => 'required',
]);
$credentials = $request->only('userEmail', 'password');
if (Auth::attempt($credentials, $request->has('remember')))
{
return redirect()->intended($this->redirectTo);
}
return redirect($this->loginPath())
->withInput($request->only('userEmail', 'remember'))
->withErrors([
'userEmail' => $this->getFailedLoginMessage(),
]);
}
我将邮件的login.blade.php中的名称字段更改为userEmail,并保留了该字段的密码作为密码。
我觉得我在这里确实缺少一些明显的东西,但是我找不到它...
如果您需要更多代码段,请打我。
答案 0 :(得分:-1)
Laravel默认情况下将使用电子邮件字段进行身份验证。由于已将其自定义为userEmail,因此还必须在LoginController上定义用户名方法,如下所示:
public function username()
{
return 'userEmail';
}