comparison xml/ru/docs/njs/examples.xml @ 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 c60bcc0de435
comparison
equal deleted inserted replaced
2639:7ad967af16b8 2640:885bcb41fbcf
7 <!DOCTYPE article SYSTEM "../../../../dtd/article.dtd"> 7 <!DOCTYPE article SYSTEM "../../../../dtd/article.dtd">
8 8
9 <article name="Примеры использования" 9 <article name="Примеры использования"
10 link="/ru/docs/njs/examples.html" 10 link="/ru/docs/njs/examples.html"
11 lang="ru" 11 lang="ru"
12 rev="16"> 12 rev="17">
13 13
14 <section id="summary"> 14 <section id="summary">
15 15
16 <para> 16 <para>
17 Примеры работают начиная с версии 17 Примеры работают начиная с версии
223 223
224 return generate_hs256_jwt(claims, 'foo', 600); 224 return generate_hs256_jwt(claims, 'foo', 600);
225 } 225 }
226 226
227 export default {jwt}; 227 export default {jwt};
228 </example>
229 </para>
230
231 </section>
232
233
234 <section id="jwt_field" name="Получение произвольного поля JWT
235 как значение переменной nginx">
236
237 <para>
238 <path>nginx.conf</path>:
239 <example>
240 js_import http.js;
241
242 js_set $jwt_payload_sub main.jwt_payload_sub;
243
244 server {
245 ...
246
247 location /jwt {
248 return 200 $jwt_payload_sub;
249 }
250 }
251 </example>
252 </para>
253
254 <para>
255 <path>http.js</path>:
256 <example>
257 function jwt(data) {
258 var parts = data.split('.').slice(0,2)
259 .map(v=>Buffer.from(v, 'base64url').toString())
260 .map(JSON.parse);
261 return { headers:parts[0], payload: parts[1] };
262 }
263
264 function jwt_payload_sub(r) {
265 return jwt(r.headersIn.Authorization.slice(7)).payload.sub;
266 }
267
268 export default {jwt_payload_sub}
228 </example> 269 </example>
229 </para> 270 </para>
230 271
231 </section> 272 </section>
232 273