Web Services 使用laravel/lumen中的客户端ID和密钥访问API

piv4azn7  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(151)

我已经为我的Web应用程序创建了一个API。现在我想给予访问世界的权限,但在提供访问权限之前,我需要类似Facebook API、Twitter API、Google API的机制,这些机制提供客户端ID和密钥。目前,我使用的是JWT AuthController,用户使用其凭据登录并返回令牌,我不希望用户登录。
我希望用户可以使用客户端ID和密钥访问我的API?另一件事是,我将如何为用户创建客户端ID和密钥?
这是否可以使用JWT Auth实现?
有什么帮助吗?

x8diyxa7

x8diyxa71#

我读过这篇文章,很有希望,但在几个帖子后,它建议使用oauth2,在这里你去:
https://laracasts.com/discuss/channels/lumen/api-authorization-via-public-and-secret-keys
引号:
只需将类添加到API配置中。

namespace App\Providers\Guard;

use Dingo\Api\Auth\Provider\Authorization; use
Dingo\Api\Routing\Route; use Illuminate\Http\Request; use
Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;

class GuardProvider extends Authorization {
    /**
      * Get the providers authorization method.
      *
      * @return string
      */
     public function getAuthorizationMethod()
     {
         return 'X-Authorization';
     }

     /**
      * Authenticate the request and return the authenticated user instance.
      *
      * @param \Illuminate\Http\Request $request
      * @param \Dingo\Api\Routing\Route $route
      *
      * @return mixed
      */
     public function authenticate(Request $request, Route $route)
     {
         $key = $request->header(env('API_AUTH_HEADER', 'X-Authorization'));
         if (empty($key)) $key = $request->input(env('API_AUTH_HEADER', 'X-Authorization'));
         if (empty($key)) throw new UnauthorizedHttpException('Guard', 'The supplied API KEY is missing or an invalid authorization header was sent');

         $user = app('db')->select("SELECT * FROM users WHERE users.key = ?", [$key]);
         if (!$user) throw new UnauthorizedHttpException('Guard', 'The supplied API KEY is not valid');

         return $user;
     } 
}

相关问题