我目前正在做我的第一个laravel项目,我正面临着一个问题。
如果您有使用laravel的经验,您可能知道,通过调用php artisan make:auth
,您将获得一个处理登录和注册的预定义机制。
这个机制被设置为理解几个常用的单词,以便自动化整个过程。
在我的例子中出现的问题是,我使用的是oracle db,它不允许我有一个名为password
的表列,因为它是一个系统关键字,并且在尝试插入用户时抛出错误。
到目前为止,我已经尝试将我的password
列更改为passwd
,它在我的注册表中按预期工作。已成功插入用户行,并且我的页面被重定向到/home。
但是当我尝试注销然后重新登录时,我收到这个错误,告诉我我的凭据不正确:
至于我的代码,我已经更改了我的RegisterController.php
,以便它接受用户名而不是电子邮件
protected function validator(array $data)
{
return Validator::make($data, [
'username' => 'required|max:50|unique:ECON_USERS',
'passwd' => 'required|min:6|confirmed',
]);
}
protected function create(array $data)
{
return User::create([
'username' => $data['username'],
'passwd' => bcrypt($data['passwd'])
]);
}
用户$fillable
protected $fillable = [
'username', 'passwd'
];
我猜测Auth正在尝试使用email
而不是username
进行身份验证,或者Auth正在搜索password
而不是passwd
。
发布于 2017-05-31 22:20:40
使用这个。这是我的工作。
到目前为止,我已经更改了User.php
public function getAuthPassword(){
return $this->senha;
}
和
public function setPasswordAttribute($value)
{
$this->attributes['password'] = bcrypt($value);
}
也在LoginController.php上
public function username()
{
return 'usuario';
}
发布于 2016-09-08 00:21:34
在app/Http/Controllers/Auth/LoginController
中,通过添加以下内容覆盖默认类:
/**
* Validate the user login request.
*
* @param \Illuminate\Http\Request $request
* @return void
*/
protected function validateLogin(Request $request)
{
$this->validate($request, [
$this->username() => 'required', 'passwd' => 'required',
]);
}
别忘了添加use Illuminate\Http\Request;
这也可能是你必须将它添加到你的LoginController
中。
/**
* Get the needed authorization credentials from the request.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
protected function credentials(Request $request)
{
return $request->only($this->username(), 'passwd');
}
这应该就行了。
发布于 2019-12-05 10:57:33
如果您使用的是最新版本。我像下面的自定义密码字段代码一样返回它。就我而言,我使用Lumen 6.x,尽管它也适用于当前版本的Laravel。
/**
* Get the custom password field for the user.
*
* @return string
*/
public function getAuthPassword()
{
return $this->custom_password_field_here;
}
https://stackoverflow.com/questions/39374472
复制相似问题