I'm using laravel/passport:7.5.1 package in my laravel project and recently faced with this exception. Any Idea? I temperory downgrade the lcobucci/jwt:3.4.0 package to lcobucci/jwt:3.3.3
Replicating claims as headers is deprecated and will removed from v4.0. Please manually set the header if you need it replicated.
Run Code Online (Sandbox Code Playgroud)
Stack Trace:
"exception": {
"trace": [
"/var/www/app/vendor/lcobucci/jwt/src/Builder.php:334",
"/var/www/app/vendor/lcobucci/jwt/src/Builder.php:185",
"/var/www/app/vendor/lcobucci/jwt/src/Builder.php:201",
"/var/www/app/vendor/league/oauth2-server/src/Entities/Traits/AccessTokenTrait.php:34",
"/var/www/app/vendor/league/oauth2-server/src/ResponseTypes/BearerTokenResponse.php:28",
"/var/www/app/vendor/league/oauth2-server/src/AuthorizationServer.php:202",
"/var/www/app/vendor/laravel/passport/src/PersonalAccessTokenFactory.php:114",
"/var/www/app/vendor/laravel/passport/src/PersonalAccessTokenFactory.php:71",
"/var/www/app/vendor/laravel/passport/src/HasApiTokens.php:67",
"/var/www/app/app/Http/Controllers/Auth/Shop/GetTokenController.php:84",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:45",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Route.php:219",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Route.php:176",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php:680",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:30",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php:41",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php:58",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:104",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php:682",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php:657",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php:623",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php:612",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:176",
"/var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:30", …Run Code Online (Sandbox Code Playgroud) 这是我PostTransformer加入关系的地方
public function includeComments(Post $post)
{
if (($post->is_paid == 1 && $post->haspaid == 1) || ($post->author == $this->params) || ($post->is_paid == 0)){
$comments = Comment::where('post', $post->id)
->where('is_blocked', '=', 0)
->select('id',
'text',
'author',
'post',
'created_at',
'updated_at',
'book_id',
DB::raw("if(comments.author=$this->params,'true','false') as isauthor"))
->orderBy('created_at', 'ASC')
->paginate(5);
$commentTransformer = new CommentTransformer($this->params);
$commentResource = $this->collection($comments, $commentTransformer, 'comment')->setMeta(['total'=>count($comments)]);
return $commentResource;
} elseif ($post->is_paid == 1 && $post->haspaid == 0) {
return $this->null();
}
}
Run Code Online (Sandbox Code Playgroud)
这应该与meta的评论关系产生.但这里的问题是我没有得到包含关系的meta.如果有人可以帮我解决这个问题.
目的是创建一个Reader类,该类作为League Flysystem 文档的包装
该读者应提供的阅读目录中的所有文件,方便的方式,不管文件的物理形态(本地文件,或者归档的文件)
由于DI方法,包装器不应在其内部创建依赖项实例,而应将这些依赖项作为构造函数或其他setter方法的参数。
这是一个示例,如何单独使用 League Flysystem(没有提到的包装器)从磁盘读取常规文件:
<?php
use League\Flysystem\Filesystem;
use League\Flysystem\Adapter\Local;
$adapter = new Local(__DIR__.'/path/to/root');
$filesystem = new Filesystem($adapter);
$content = $filesystem->read('path-to-file.txt');
Run Code Online (Sandbox Code Playgroud)
如您所见,首先创建一个在其构造函数中需要路径的适配器Local,然后创建在其构造函数中需要适配器实例的文件系统。
两个参数:Filesystem和Local不是可选的。从这些类创建对象时必须传递它们。这两个类都没有针对这些参数的公共设置方法。
我的问题是如何通过使用依赖注入来编写包装Filesytem和Local的Reader类?
我通常会做类似的事情:
<?php
use League\Flysystem\FilesystemInterface;
use League\Flysystem\AdapterInterface;
class Reader
{
private $filesystem;
private $adapter
public function __construct(FilesystemInterface $filesystem,
AdapterInterface $adapter)
{
$this->filesystem = $filesystem;
$this->adapter = $adapter;
}
public function readContents(string $pathToDirWithFiles)
{
/**
* uses $this->filesystem …Run Code Online (Sandbox Code Playgroud) 我使用Slim Framework带Eloquent ORM.试图实现https://github.com/thephpleague/oauth2-server但我完全很困惑如何做到这一点.使用composer添加后,我使用此包中提供的sql文件创建了数据库.
现在建议实现存储接口.我不想这样做,所以我只是复制了在Example Folder中找到的存储类.我猜他们应该工作,因为我正在使用相同的数据库吗?
还不清楚如何初始播种数据库.这是我正在尝试password方法的路由器.
$server = new \League\OAuth2\Server\AuthorizationServer;
$server->setSessionStorage(new SessionStorage);
$server->setAccessTokenStorage(new AccessTokenStorage);
$server->setClientStorage(new ClientStorage);
$server->setScopeStorage(new ScopeStorage);
$passwordGrant = new \League\OAuth2\Server\Grant\PasswordGrant();
$passwordGrant->setVerifyCredentialsCallback(function ($username, $password) {
// implement logic here to validate a username and password, return an ID if valid, otherwise return false
return 1;
});
$server->addGrantType($passwordGrant);
$app->post('/token',function() use ($server,$app){
try{
$response = $server->issueAccessToken();
$res = $app->response();
$res['Content-Type'] = 'application/json';
$res->body(json_encode($response));
} catch (\Exception $e) {
var_dump($e);
}
}); …Run Code Online (Sandbox Code Playgroud) php ×4
thephpleague ×4
eloquent ×1
json-api ×1
laravel ×1
laravel-5.3 ×1
oauth ×1
oop ×1
slim ×1
wrapper ×1