【问题标题】:Can't use Laravel's Authentification无法使用 Laravel 身份验证
【发布时间】:2019-04-01 03:44:21
【问题描述】:

我正在尝试配置 laravel 的身份验证以适合我的数据库。 但无论我做什么,在 LoginController 中覆盖 protected $table='my_table';public function username() { return 'email_user'} 之类的属性,它都会忽略所有内容。 有谁知道如何使用不同的数据库参数 laravel 的身份验证?

这是我在 LoginController 中所做的更改:

public function username()
{
    return 'email_user';
}

在用户模型中:

protected $table = "pays";
protected $primaryKey = "id_user";

public function getAuthPassword() { 
    return $this->password_user; 
}

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name_user', 'surname_user', 'email_user', 'password_user', 'sex_user', 'birth_user', 'address_user', 
    'city_user', 'pc_user', 'phone_user', 'pic_user', 'status_user', 'license_user', 'urssaf_user', 
    'remember_token', 'created_at', 'updated_at',
];

编辑:config/auth.php:

<?php

return [

'defaults' => [
    'guard' => 'web',
    'passwords' => 'users',
],

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
    ],
],


'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],

    // 'users' => [
    //     'driver' => 'database',
    //     'table' => 'users',
    // ],
],




'passwords' => [
    'users' => [
        'provider' => 'users',
        'table' => 'password_resets',
        'expire' => 60,
    ],
],

]; 登录控制器:

<?php

命名空间 App\Http\Controllers\Auth;

使用 App\Http\Controllers\Controller; 使用 Illuminate\Foundation\Auth\AuthenticatesUsers;

类 LoginController 扩展控制器 { /* |------------------------------------------------- ------------------------- |登录控制器 |------------------------------------------------- ------------------------- | |该控制器处理应用程序的用户身份验证和 |将它们重定向到您的主屏幕。控制器使用一个特征 |方便地为您的应用程序提供其功能。 | */

use AuthenticatesUsers;

/**
 * Where to redirect users after login.
 *
 * @var string
 */
protected $redirectTo = '/home';

/**
 * Create a new controller instance.
 *
 * @return void
 */
public function __construct()
{
    $this->middleware('guest')->except('logout');
}

public function username()
{
    return 'email_user';
}
}

【问题讨论】:

标签: php laravel authentication overriding


【解决方案1】:

在您的登录表单中,使用name=password 保留密码字段:

<input type="text" name="email_user">

<input type="password" name="password">

【讨论】:

  • 已经是这样了。我没有触摸视图。我只更改了 RegisterController 登录控制器和用户
  • 如果您没有触摸视图,那么您应该像在 LoginController 中一样将电子邮件字段更改为“email_user”。我已经更新了我的答案。
  • 天哪,我很抱歉,我不明白那种方式......终于奏效了。非常感谢您,给您带来的不便深表歉意。
猜你喜欢
  • 2021-08-09
  • 2016-03-11
  • 2015-04-27
  • 2019-09-10
  • 2013-05-30
  • 1970-01-01
  • 2012-03-31
  • 2018-02-19
  • 2016-11-09
相关资源
最近更新 更多