{"id":13799763,"url":"https://github.com/chentsulin/koa-bearer-token","last_synced_at":"2025-04-07T05:10:39.900Z","repository":{"id":30952697,"uuid":"34510794","full_name":"chentsulin/koa-bearer-token","owner":"chentsulin","description":"Bearer token parser middleware for koa","archived":false,"fork":false,"pushed_at":"2024-10-09T00:16:10.000Z","size":946,"stargazers_count":34,"open_issues_count":1,"forks_count":6,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-31T04:06:18.019Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chentsulin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-04-24T09:46:31.000Z","updated_at":"2025-02-09T12:27:53.000Z","dependencies_parsed_at":"2024-06-17T04:23:46.603Z","dependency_job_id":"b5b39133-c697-429b-9b16-3caff5370e86","html_url":"https://github.com/chentsulin/koa-bearer-token","commit_stats":{"total_commits":62,"total_committers":4,"mean_commits":15.5,"dds":"0.22580645161290325","last_synced_commit":"bb88ab47a48f282360fbfc1248266445db8b16b5"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chentsulin%2Fkoa-bearer-token","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chentsulin%2Fkoa-bearer-token/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chentsulin%2Fkoa-bearer-token/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chentsulin%2Fkoa-bearer-token/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chentsulin","download_url":"https://codeload.github.com/chentsulin/koa-bearer-token/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247595335,"owners_count":20963943,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T00:01:05.847Z","updated_at":"2025-04-07T05:10:39.879Z","avatar_url":"https://github.com/chentsulin.png","language":"TypeScript","funding_links":[],"categories":["仓库"],"sub_categories":["中间件"],"readme":"# koa-bearer-token\n\n[![npm version](https://badge.fury.io/js/koa-bearer-token.svg)](https://npmjs.org/package/koa-bearer-token)\n[![Build Status](https://github.com/chentsulin/koa-bearer-token/workflows/CI/badge.svg?branch=master)](https://github.com/chentsulin/koa-bearer-token/actions?query=branch%3Amaster)\n[![Coverage Status](https://coveralls.io/repos/github/chentsulin/koa-bearer-token/badge.svg?branch=master)](https://coveralls.io/r/chentsulin/koa-bearer-token?branch=master)\n\n\u003e Bearer token parser middleware for koa\n\nInspired by [express-bearer-token](https://www.npmjs.com/package/express-bearer-token)\n\n## Installation\n\n```sh\n$ npm install koa-bearer-token\n```\n\n## What?\n\nPer [RFC6750](https://datatracker.ietf.org/doc/html/rfc6750) this module will attempt to extract a bearer token from a request from these locations:\n\n- The key `access_token` in the request body.\n- The key `access_token` in the request query params.\n- The value from the header `Authorization: Bearer \u003ctoken\u003e`.\n- (Optional) Get a token from cookies header with key `access_token`.\n\nIf a token is found, it will be stored on `ctx.request.token`. If one has been provided in more than one location, this will abort the request immediately by sending code 400 (per [RFC6750]).\n\n```js\nconst Koa = require('koa');\nconst bodyParser = require('koa-bodyparser');\nconst { bearerToken } = require('koa-bearer-token');\n\nconst app = new Koa();\n\napp.use(bodyParser());\napp.use(bearerToken());\n\napp.use((ctx) =\u003e {\n  // ctx.request.token\n});\n\napp.listen(3000);\n```\n\nFor APIs which are not compliant with [RFC6750], the key for the token in each location is customizable, as is the key the token is bound to on the request (default configuration shown):\n\n```js\napp.use(\n  bearerToken({\n    bodyKey: 'access_token',\n    queryKey: 'access_token',\n    headerKey: 'Bearer',\n    reqKey: 'token',\n  }),\n);\n```\n\nGet token from cookie key (it can be signed or not)\n\n**Warning**: by **NOT** passing `{ signed: true }` you are accepting a non signed cookie and an attacker might spoof the cookies. so keep in mind to use signed cookies\n\n```js\napp.use(\n  bearerToken({\n    cookie: {\n      signed: true, // if passed true you must pass secret otherwise will throw error\n      secret: 'YOUR_APP_SECRET',\n      key: 'access_token', // default value\n    },\n  }),\n);\n```\n\n## TypeScript\n\nAs of version 2.0.1 we've added initial support for TypeScript.\n\nIf you're using your custom `reqKey`, you must do [module augmentation](https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation) on your own:\n\n```ts\ndeclare module 'koa' {\n  interface Request {\n    myToken?: string;\n  }\n}\n\napp.use(\n  bearerToken({\n    reqKey: 'myToken',\n  }),\n);\n```\n\n## Compatibility table\n\n| koa version | koa-bearer-token version |\n| :---------: | :----------------------: |\n|    `\u003c2`     |         `0.x.x`          |\n|     `2`     |        `\u003e=1.x.x`         |\n\n## License\n\nMIT © [C. T. Lin](https://github.com/chentsulin)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchentsulin%2Fkoa-bearer-token","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchentsulin%2Fkoa-bearer-token","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchentsulin%2Fkoa-bearer-token/lists"}