【问题标题】:How to change the default behavior of Laravel 5.2 authentication如何更改 Laravel 5.2 身份验证的默认行为
【发布时间】:2016-09-07 15:06:09
【问题描述】:

在 Laravel 5.2 《身份验证快速入门》的文档中:

“Laravel 提供了一种快速的方法,可以使用一个简单的命令来构建您需要进行身份验证的所有路由和视图”。

php artisan make:auth


运行该命令后,默认行为会创建很多关于模型、控制器、视图、数据库表等的文件……

我发现创建了一个“users”表,其中包含“id name email password”列,太棒了!

但是,如果我的 Web 应用程序具有不同的“用户”结构,例如我不使用唯一的“电子邮件”属性来识别。

如何更改命令php artisan make:auth 的行为?

谢谢!

【问题讨论】:

    标签: laravel authentication laravel-5.2 laravel-artisan


    【解决方案1】:

    users 表迁移甚至在您执行 php artisan make:auth 之前就已经存在。因此,从电子邮件列中删除 unique 键所需要做的就是转到位于此处的迁移文件:

    database/migrations/create_users_table.

    要从您的电子邮件列中删除 unique 键,只需将其从代码中删除即可

    $table->string('email');
    

    所以它应该是这样的:

    Schema::create('users', function (Blueprint $table) {
                $table->increments('id');
                $table->string('name');
                $table->string('email');
                $table->string('password');
                $table->rememberToken();
                $table->timestamps();
    });
    

    【讨论】:

    • 感谢您的回答。但我不明白,当我修改由 laravel 自动创建的迁移 php 文件时,删除所有“电子邮件”列。并运行php artisan make:auth。我还收到了与电子邮件相关的文件,例如一些 Blade.php 文件。这是否意味着我应该在运行 make:auth 命令后删除所有自动分类的电子邮件内容?
    • 不,您需要做的是从迁移文件中删除唯一键后,您可以转到终端并输入php artisan migrate:refresh,它将使用新的迁移刷新数据库。您无需再次执行php artisan make:auth,因为它只会生成路线和视图。您的迁移文件不是由该命令生成的。
    【解决方案2】:

    按照@Taylor Swift 的说法更新您的迁移。

    正如你所说。您的用户表中没有“电子邮件”。

    将您的用户迁移更新为以下内容,

    Schema::create('users', function (Blueprint $table) {
                $table->increments('id');
                $table->string('name');
                $table->string('password');
                $table->rememberToken();
                $table->timestamps();
    });
    

    AuthController 默认使用电子邮件来识别用户

    开箱即用的 laravel AuthController 允许用户使用电子邮件、密码登录。

    因为您不需要电子邮件。 (假设您使用 id 作为每个用户的唯一值)。您需要告诉 AuthController 通过 id 而不是电子邮件来查找用户。

    所以打开你的 AuthController 这是在

    应用\Http\Controllers\Auth\AuthController

    并添加以下行

    protected $username = 'id';
    

    你的 Auth 控制器看起来像

    class AuthController extends Controller
    {
    
        use AuthenticatesAndRegistersUsers, ThrottlesLogins;
    
    
        protected $username = 'id';
    
    
        public function __construct()
        {
            $this->middleware($this->guestMiddleware(), ['except' => 'logout']);
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2018-01-19
      • 1970-01-01
      • 2015-01-15
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 2017-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多