【问题标题】:Changing Laravel auth table name and column names更改 Laravel auth 表名和列名
【发布时间】:2019-09-01 17:24:15
【问题描述】:

我想更改 laravel auth table 的表名和一些列名。

  • 将表名称从“用户”更改为“帐户”
  • 将表列名称从“名称”更改为“用户名”
  • 将表列名称从“email”更改为“email_addr”
  • 将表列名称从“updated_at”更改为“last_updated_at”

我应该采取哪些步骤或编辑哪些代码而不破坏某些内容?

我之前尝试过,注册成功,但登录失败。每当我尝试登录时,我都会被重定向回登录页面。

【问题讨论】:

标签: laravel laravel-5 laravel-authorization laravel-authentication


【解决方案1】:

您可以按照以下给定的步骤操作:

  1. 创建/修改迁移以将 users 表更改为 accounts
  2. 创建迁移以根据您对表 accounts 的要求更改列名。确保此模型调用扩展 Authenticatable
  3. accounts 表创建模型类。
  4. 确保添加表格的fillablehidden属性。
  5. 现在检查 login.blade.php 文件并将email 输入文本字段名称更改为email_address

通过以上所有步骤,我们已经准备好 View 部分,现在让我们开始自定义 Auth

  1. 现在打开 config/auth.php

    • providers 数组中从 'model' => App\User::class, 更改为 'model' => App\Account:class
  2. 现在我们需要在 app/Http/Auth/LoginController.php 中添加新函数,如下所示:

public function username(){ return 'email_address'; // this string is column of accounts table which we are going use for login }

现在我们完成了所有调整,您可以测试功能。

我已经测试了它的功能和它的魅力:)

【讨论】:

  • 感谢添加 public function username(){ return 'email_addr'; }。解决了我的问题。
  • 我还更新了 RegisterController 类方法#validator()。 'email' => ['required', 'string', 'email', 'max:255', 'unique:accounts'],
【解决方案2】:

您必须在您的 Account 模型中扩展“Illuminate\Foundation\Auth\User”。

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class Account extends Authenticatable
{ 
  use Notifiable;

  //code here
  public function getEmailAttribute() {
      return $this->email_addr;
  }

  public function setEmailAttribute($value)
  {
    $this->attributes['email_addr'] = strtolower($value);
  }
}

并更改提供者数组中“config/auth.php”中的配置文件

'users' => [
        'driver' => 'eloquent',
        'model' => App\Account::class,  //replace User to Account
    ],

【讨论】:

  • 哪些列?我该怎么做?
  • 您必须在 Account 模型中自定义它们
  • 如何自定义?模板、控制器呢?
  • 您是否使用默认登录路径
猜你喜欢
  • 2016-10-09
  • 1970-01-01
  • 2015-11-27
  • 2017-07-30
  • 1970-01-01
  • 2021-06-22
  • 1970-01-01
  • 2016-02-26
相关资源
最近更新 更多