朋友们,我正在使用用户表列,如(USERNAME,EMAIL,PASSWORD)如果我将列名称改为小写字母,效果很好。将列名更改为大写不起作用给我任何建议
这是我的控制器
public function postLogin(Request $request)
{
$this->validate($request, array('username' => 'required', 'password' => 'required'));
$credentials = $request->only('USERNAME', 'PASSWORD');
if (Auth::validate($credentials))
{
$user = Auth::getLastAttempted();
Auth::login($user, $request->has('remember'));
return redirect()->intended($this->redirectPath());
}
return redirect($this->loginPath())
->withInput($request->only('USERNAME', 'remember'))
->withErrors([
'username' => $this->getFailedLoginMessage(),
]);
}
使用Laravel获得的两个用户提供程序(EloquentUserProvider和DatabaseUserProvider都希望密码存储在小写的password字段中。
为了使用PASSWORD字段进行身份验证,您需要做两件事。
首先,让提供者知道用户的密码存储在password列中。您可以通过在User模型中实现getAuthPassword方法来实现这一点:
public function getAuthPassword() {
return $this->PASSWORD;
}
其次,密码需要使用password密钥存储在传递给Auth::validate()的凭据数组中。您需要将用户输入密码的表单字段的名称更改为密码或手动创建凭据数组:
$credentials = [
'USERNAME' => $request->get('USERNAME'),
'password' => $request->get('PASSWORD'),
];