Laravel 5.8 新用户注册时无法生成 api_token
Posted
技术标签:
【中文标题】Laravel 5.8 新用户注册时无法生成 api_token【英文标题】:Laravel 5.8 cannot generate api_token when new user register 【发布时间】:2019-08-31 03:44:52 【问题描述】:我正在玩 Laravel 身份验证。
在使用 Composer 新创建的 Laravel 应用程序上,我一直按照说明进行操作(包括在内)
https://laravel.com/docs/5.8/api-authentication#generating-tokens
但是,当我注册新用户时,api_token 字段为 NULL。
我还需要做什么才能在用户注册时开始生成 api 令牌??
在RegisterController中创建方法:
protected function create(array $data)
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'api_token' => Str::random(60),
]);
迁移(我称之为Token)更新用户表:
class Token extends Migration
/**
* Run the migrations.
*
* @return void
*/
public function up()
Schema::table('users', function (Blueprint $table)
$table->string('api_token', 80)->after('password')
->unique()
->nullable()
->default(null);
);
应用\用户模型:
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
【问题讨论】:
你能告诉我们你的用户模型吗?我的猜测是 api_token 不是您的protected $fillables
的一部分。
当然。在这里你进入编辑。用户模型与最初的脚手架没有任何关系
【参考方案1】:
创建迁移后,运行the migrate Artisan 命令:
php artisan migrate
如果你使用Homestead virtual machine,你应该在你的虚拟机中运行这个命令:
php artisan migrate --force
【讨论】:
【参考方案2】:在您的用户模型中,将“api_token”添加到您的可填充项中
class User extends Authenticatable
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name',
'email',
'password',
'api_token'
];
【讨论】:
工作。 “remember_token”字段呢?我也应该包含在可填充项中吗? 我认为您不必添加它,因为 laravel 已经处理了它。您在初始设置之后添加的要修改的任何字段都应添加到模型$fillble
属性中。
@RicardoVigatti 应该是,但 Taylor 喜欢关闭 PRs以上是关于Laravel 5.8 新用户注册时无法生成 api_token的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.8 JWT API 仅在用户状态为活动时登录用户
Summernote 所见即所得编辑器无法使用 Laravel 5.8 正确呈现数据