Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Lumen Authorization-调用数组上的成员函数参数()_Php_Lumen - Fatal编程技术网

Php Lumen Authorization-调用数组上的成员函数参数()

Php Lumen Authorization-调用数组上的成员函数参数(),php,lumen,Php,Lumen,如果用户id和帖子用户id匹配,尝试授权用户更新帖子。我在AuthServiceProvider中有一个用于授权的自定义回调,它检查'authorization'头,这是boot()函数中的一个API键 $this->app['auth']->viaRequest('api', function ($request) { if($request->header('Authorization')) { $user = $th

如果用户id和帖子用户id匹配,尝试授权用户更新帖子。我在
AuthServiceProvider
中有一个用于授权的自定义回调,它检查
'authorization'
头,这是
boot()
函数中的一个API键

$this->app['auth']->viaRequest('api', function ($request) {
            if($request->header('Authorization')) {
                $user = $this->getUserFromAuthorizationHeader($request);

                if (!empty($user)) {
                    $request->request->add(['userid' => $user->id]);
                }

                return $user;
            }
        });
函数
getUserFromAuthorizationHeader
获取一个
Request$Request
参数并提取
Authorization
头,它是一个api键,然后返回一个
User
对象

我定义了一个gate
updatepost
,它检查从回调返回的用户以及从控制器调用gate
updatepost
时传递的post

Gate::define('update-post', function($user, $post){
            Log::info($user);
            return $user->id == $post->user_id;
        });
我在
PostController
中调用Gate的方式如下

...
$user = $this->getUserFromRequest($request);
        if(Gate::denies('update-post', $post)) {
            return response("Unauthorized.", 401);
        }
...

我使用Log::info()-将
$user
$post
变量记录在我的Gate中,我可以成功地看到正确的user和post对象被传递,但是我得到了对数组上的成员函数参数()的错误
调用,我不明白为什么得到它

如果要获得这样的数组,可能需要在比较之前将其转换为集合

$post = collect($post);
$user = collect($user);
Gate::define('update-post', function($user, $post){
            Log::info($user);
            return $user->id == $post->user_id;
        });

参考

在你的问题中,
参数()在哪里
我找不到it@Mr.Pyramid我从不在代码中的任何地方调用
parameter()
。看起来像
$user
$post
是数组类型否?@Mr.Pyramid是的,我想是的。如果我登录$user,我会得到
{“id”:1,“name”:“Admin”,“email”:admin@example.com“,“api_key”:“DHBKZFP1M1LVN2PSANRHM0RPU3VTNWVRCDJUTFY0NNDVA0ZLDDUUW==”}
$post
将记录相同类型的arra。但是,即使我正在从两个数组中提取我想要的键的值,即用户和post的
id
。当您得到对成员函数的
调用时,它还应该指定文件和行号以及调用堆栈-您可以共享该片段吗?