【问题标题】:API with Lumen Framework authorize not work带有 Lumen Framework 授权的 API 不起作用
【发布时间】:2020-01-28 14:03:22
【问题描述】:

我使用 Lumen 编写了一个简单的 API,但遇到了一个问题。如果他是用户,我想删除用户,但我的授权无效。

对于登录,我使用 JWT 令牌。

用户控制器.php

    /**
     * Delete user by user id.
     *
     * @param int $id
     *
     * @return mixed
     */
    public function delete($id)
    {
        $user = User::find($id);

        $this->authorize('delete', $user);

        $user->delete();

        return response()->json([
            'success'   =>  'User deleted with success'
        ], 200);
    }

UserPolicy.php

class UserPolicy
{

    public function delete(User $user, User $user_current)
    {
        return $user->id === $user_current->id;
    }

}

AuthServiceProvider.php

    public function boot()
    {
        Gate::policy(User::class, UserPolicy::class);

        $this->app['auth']->viaRequest('api', function ($request) {
            if ($request->header('Authorization')) {
                return User::where('api_token', $request->input('api_token'))->first();
            }
        });
    }

我不明白为什么它不起作用。

【问题讨论】:

  • 你能把你的错误放在这里吗?
  • 您好,感谢您的帮助,这是但发回的消息:{“错误”:“未提供令牌。” }
  • 您是否在帖子数据的标题中发送授权
  • 是的,看这里:link

标签: php laravel api jwt lumen


【解决方案1】:

尝试在标题中使用如下所示:

Authorization : Bearer [TOKEN]

更新1:

如果您使用的是 Apache,我想这可能会对您有所帮助,因为它适用于我的:
只需在您的 .htaccess 文件中添加这些行:

RewriteEngine On  
RewriteCond %{HTTP:Authorization} ^(.*)  
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]  

更新 2:

好的,请像下面的代码一样更改您的 AuthServiceProvider:

$this->app['auth']->viaRequest('api', function ($request) {
    $token = $request->bearerToken();

    if(!$token) {
        // Unauthorized response if token not there
        throw new Exception('token not provided');
    }
    .
    .
    .
}

【讨论】:

  • 总是相同的信息。
  • :'( 不行,我感觉问题出在代码上,对吧?
  • 你在使用护照库吗?
  • 不,我使用的是 firebase/php-jwt,但是当我添加授权操作时,我的 API 不起作用
  • 好的,非常感谢您的帮助,我解决了我的问题,我只是忘记传递好的api令牌并重命名令牌中的参数并使用承载令牌。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-10
  • 1970-01-01
  • 2018-07-26
  • 2012-04-24
  • 2015-08-09
  • 2018-06-20
  • 2022-08-02
相关资源
最近更新 更多