我正在制作一个使用laravel护照后端从数据库获取和发布数据的React应用。我可以完全控制应用程序代码和laravel后端代码。
我可以使用客户端,也可以简单地通过发布用户来创建访问令牌,但是我不能使用此访问令牌来访问数据,如here所述。使用生成的访问令牌发送这样的请求,每次都会给我401。
我相信我的问题在于结交客户时。我有2个客户端(运行php artisanpassport:install时取得),但是它们都有user_id = null。我假设当用户使用客户端(例如,发出访问令牌)时,应将此整数设置为整数?但是,不是。
那么,有人知道我在做什么错吗?
下面,我要发布用户模型以及迁移文件用户和oath_clients。如果需要,请随时请求更多代码!
用户模型:
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'api_token', 'redcap_token', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
用户迁移:
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('api_token', 60)->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
Oauth迁移
class CreateOauthClientsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('oauth_clients', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->index()->nullable();
$table->string('name');
$table->string('secret', 100);
$table->text('redirect');
$table->boolean('personal_access_client');
$table->boolean('password_client');
$table->boolean('revoked');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('oauth_clients');
}
}
答案 0 :(得分:1)
听起来像我,您需要引用用户hasOne
OAuth和OAuth belongsTo
用户的关系。将此添加到您的oauth_clients迁移中:
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('user');
https://laravel.com/docs/5.7/migrations#foreign-key-constraints
然后在模型中包括必要的关系。希望这会有所帮助!
// User's Table
public function oauth()
{
return $this->hasOne(OAuth::class, 'user_id');
}
// OAuth Table
public function user()
{
return $this->belongsTo(User::class, 'user_id');
}
答案 1 :(得分:0)
这是Qauth迁移,其中user_id可以为空
$table->integer('user_id')->index()->nullable();
当您使用uuid添加客户端时将其传递给它,或者将其设置为增量。