首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Laravel:如何更改默认的身份验证密码字段名称?

Laravel:如何更改默认的身份验证密码字段名称?
EN

Stack Overflow用户
提问于 2016-09-07 23:55:11
回答 5查看 47.5K关注 0票数 23

我目前正在做我的第一个laravel项目,我正面临着一个问题。

如果您有使用laravel的经验,您可能知道,通过调用php artisan make:auth,您将获得一个处理登录和注册的预定义机制。

这个机制被设置为理解几个常用的单词,以便自动化整个过程。

在我的例子中出现的问题是,我使用的是oracle db,它不允许我有一个名为password的表列,因为它是一个系统关键字,并且在尝试插入用户时抛出错误。

到目前为止,我已经尝试将我的password列更改为passwd,它在我的注册表中按预期工作。已成功插入用户行,并且我的页面被重定向到/home。

但是当我尝试注销然后重新登录时,我收到这个错误,告诉我我的凭据不正确:

至于我的代码,我已经更改了我的RegisterController.php,以便它接受用户名而不是电子邮件

代码语言:javascript
复制
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

代码语言:javascript
复制
protected $fillable = [
    'username', 'passwd'
];

我猜测Auth正在尝试使用email而不是username进行身份验证,或者Auth正在搜索password而不是passwd

EN

回答 5

Stack Overflow用户

发布于 2017-05-31 22:20:40

使用这个。这是我的工作。

到目前为止,我已经更改了User.php

代码语言:javascript
复制
public function getAuthPassword(){  
    return $this->senha;
}

代码语言:javascript
复制
public function setPasswordAttribute($value)
    {
        $this->attributes['password'] = bcrypt($value);
    }

也在LoginController.php上

代码语言:javascript
复制
public function username()
{
    return 'usuario';
}
票数 4
EN

Stack Overflow用户

发布于 2016-09-08 00:21:34

app/Http/Controllers/Auth/LoginController中,通过添加以下内容覆盖默认类:

代码语言:javascript
复制
/**
 * 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中。

代码语言:javascript
复制
/**
     * 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');
    }

这应该就行了。

票数 2
EN

Stack Overflow用户

发布于 2019-12-05 10:57:33

如果您使用的是最新版本。我像下面的自定义密码字段代码一样返回它。就我而言,我使用Lumen 6.x,尽管它也适用于当前版本的Laravel。

代码语言:javascript
复制
/**
 * Get the custom password field for the user.
 *
 * @return string
 */
public function getAuthPassword()
{
    return $this->custom_password_field_here;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39374472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档