在Laravel 5.2“身份验证快速入门”的文档中:
“Laravel提供了一种快速方法,可以使用一个简单的命令来支持您进行身份验证所需的所有路由和视图”。
php artisan make:auth
运行该命令后,默认行为将创建许多关于模型,控制器,视图,数据库表等的文件......
我发现创建了一个“用户”表,其中包含“id name email password”列,非常棒!
但是,如果我的网络应用程序有关于“用户”的不同结构,例如我不使用唯一的“email”属性来识别。
如何更改命令php artisan make:auth
的行为?
谢谢!
答案 0 :(得分: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();
});
答案 1 :(得分:1)
更新您的迁移,如@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 \控制器\验证\ AuthController
并添加以下行
protected $username = 'id';
您的Auth控制器看起来像
class AuthController extends Controller
{
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
protected $username = 'id';
public function __construct()
{
$this->middleware($this->guestMiddleware(), ['except' => 'logout']);
}
}