Mercurial > hg > nginx-site
changeset 2640:885bcb41fbcf
Added an example to njs examples.
author | Yaroslav Zhuravlev <yar@nginx.com> |
---|---|
date | Tue, 19 Jan 2021 12:40:34 +0000 |
parents | 7ad967af16b8 |
children | ea9f4dc0c801 |
files | xml/en/docs/njs/examples.xml xml/ru/docs/njs/examples.xml |
diffstat | 2 files changed, 84 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/xml/en/docs/njs/examples.xml +++ b/xml/en/docs/njs/examples.xml @@ -9,7 +9,7 @@ <article name="Examples" link="/en/docs/njs/examples.html" lang="en" - rev="16"> + rev="17"> <section id="summary"> @@ -232,6 +232,47 @@ export default {jwt}; </section> +<section id="jwt_field" name="Getting Arbitrary Field from JWT + as nginx Variable"> + +<para> +<path>nginx.conf</path>: +<example> +js_import http.js; + +js_set $jwt_payload_sub main.jwt_payload_sub; + +server { + ... + + location /jwt { + return 200 $jwt_payload_sub; + } +} +</example> +</para> + +<para> +<path>http.js</path>: +<example> +function jwt(data) { + var parts = data.split('.').slice(0,2) + .map(v=>Buffer.from(v, 'base64url').toString()) + .map(JSON.parse); + return { headers:parts[0], payload: parts[1] }; +} + +function jwt_payload_sub(r) { + return jwt(r.headersIn.Authorization.slice(7)).payload.sub; +} + +export default {jwt_payload_sub} +</example> +</para> + +</section> + + <section id="subrequest" name="Accessing API from a Subrequest"> <para>
--- a/xml/ru/docs/njs/examples.xml +++ b/xml/ru/docs/njs/examples.xml @@ -9,7 +9,7 @@ <article name="Примеры использования" link="/ru/docs/njs/examples.html" lang="ru" - rev="16"> + rev="17"> <section id="summary"> @@ -231,6 +231,47 @@ export default {jwt}; </section> +<section id="jwt_field" name="Получение произвольного поля JWT + как значение переменной nginx"> + +<para> +<path>nginx.conf</path>: +<example> +js_import http.js; + +js_set $jwt_payload_sub main.jwt_payload_sub; + +server { + ... + + location /jwt { + return 200 $jwt_payload_sub; + } +} +</example> +</para> + +<para> +<path>http.js</path>: +<example> +function jwt(data) { + var parts = data.split('.').slice(0,2) + .map(v=>Buffer.from(v, 'base64url').toString()) + .map(JSON.parse); + return { headers:parts[0], payload: parts[1] }; +} + +function jwt_payload_sub(r) { + return jwt(r.headersIn.Authorization.slice(7)).payload.sub; +} + +export default {jwt_payload_sub} +</example> +</para> + +</section> + + <section id="subrequest" name="Доступ к API из подзапроса"> <para>