3
尝试授权用户在用户标识和帖子user_id匹配时更新帖子。我有一个AuthServiceProvider
授权的自定义回调,它检查'Authorization'
标题,它是boot()
函数中的API密钥。Lumen授权 - 调用阵列上的成员函数参数()
$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
对象。
我定义了一个门update-post
,用于检查从回调中返回的用户以及从控制器调用门update-post
时传递的用户。
Gate::define('update-post', function($user, $post){
Log::info($user);
return $user->id == $post->user_id;
});
我打电话我PostController
门的方式是由以下
...
$user = $this->getUserFromRequest($request);
if(Gate::denies('update-post', $post)) {
return response("Unauthorized.", 401);
}
...
我登录 - using Log:: info()
- 在我门的$user
和$post
变量,我可以成功地看到了正确的用户和后传递的对象,但我得到错误Call to a member function parameter() on array
,我不明白为什么我正好得到它。
哪里是'参数()'在你的问题我不能找到它 –
@先生金字塔我从来没有在我的代码中的任何地方调用'parameter()'。 – qasimalbaqali
看起来像'$ user','$ post'是数组类型no? –