在 laravel/lumen 中使用客户端 ID 和密钥访问 API
Posted
技术标签:
【中文标题】在 laravel/lumen 中使用客户端 ID 和密钥访问 API【英文标题】:Access API using client id and secret key in laravel/lumen 【发布时间】:2017-01-10 19:42:28 【问题描述】:我为我的 Web 应用程序创建了一个 API。现在我想授予对世界的访问权限,但在授予访问权限之前,我想要提供诸如 Facebook API、Twitter API、Google API 之类的机制,它们提供客户端 ID 和密钥。目前,我正在使用 JWT AuthController,用户使用他的凭据登录并返回一个令牌,我不希望用户登录。
我希望用户可以使用客户端 ID 和密钥访问我的 API?另一件事是,我将如何为用户创建客户端 ID 和密钥?
这可以使用 JWT Auth 实现吗?
有什么帮助吗?
【问题讨论】:
这里有 api 开发者吗? 【参考方案1】:我已经阅读了这篇文章并且很有希望,但是在几篇文章之后建议使用 oauth2,给你:
https://laracasts.com/discuss/channels/lumen/api-authorization-via-public-and-secret-keys
引用:
只需将类添加到您的 API 配置中即可。
命名空间 App\Providers\Guard;
使用 Dingo\Api\Auth\Provider\Authorization;采用 野狗\API\路由\路由;使用 Illuminate\Http\Request;采用 Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
类 GuardProvider 扩展授权 /** * 获取提供者授权方式。 * * @return 字符串 */ 公共函数 getAuthorizationMethod() 返回“X-授权”;
/** * 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;
【讨论】:
始终欢迎提供指向潜在解决方案的链接,但请add context around the link,以便您的其他用户知道它是什么以及为什么存在。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。考虑到仅仅是指向外部站点的链接是Why and how are some answers deleted? 的一个可能原因。 非常糟糕的行为,但除此之外,我经常被 2 否决(不愿意给我机会),我是来帮助你的,但今天是非常糟糕的一天跨度>以上是关于在 laravel/lumen 中使用客户端 ID 和密钥访问 API的主要内容,如果未能解决你的问题,请参考以下文章
为啥 GuzzleHttp 客户端在 Laravel/Lumen 上使用它发出网络请求时会抛出 ClientException?