有没有一种方法可以设置laravel护照的动态范围,而不是手动输入?
我尝试创建具有作用域名称和描述的表(MySql),创建了一个模型Scope,但是该模型在AuthServiceProvider中不起作用
Passport::tokensCan([
'view-dashboard' => 'View the contents of dashboard',
'view-reports' => 'View the detailed reports'
]);
如何使示波器动态化?我想通过创建一些界面来根据用户的角色来管理作用域
编辑:我可以将解决方案与我的现状联系起来,这确实很有意义,但是您可以在代码行中为我们提供帮助
$token->scopes = user_scopes;
我在用户模型中遇到异常错误Attempt to assign property scopes of non-object
,因为如上所述,我已经在User类中添加了您的代码。您能告诉我如何获取范围ID吗?
答案 0 :(得分:1)
您可以尝试:
创建一个附加到用户的user_scopes表,该表具有要分配给该用户的作用域
重载用户类中的withAccessToken()方法,该方法是HasApiTokens特性的一部分。使用此钩子可以从该用户的数据库中提取作用域,并将其分配给访问令牌:
public function withAccessToken($accessToken)
{
$this->accessToken = $accessToken;
$token = $this->token();
$token->scopes = $this->user_scopes;
$token->save();
return $this;
}
如果您想要完全的灵活性,请尝试扩展和覆盖src / Bridge / ScopeRepository类
// in App\Providers\AppServiceProvider:
use App\ScopeRepository;
use Illuminate\Support\ServiceProvider;
use Laravel\Passport\Bridge\ScopeRepository as PassportScopeRepository;
class AppServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->bind(PassportScopeRepository::class, ScopeRepository::class);
}
}
请按此查看完整的详细信息。 https://github.com/laravel/passport/issues/195