Learn-json-web-tokens: рдкрд░реАрдХреНрд╖рдг API рдЬреЛ JWTs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 8 рдЬреБрд▓ре░ 2015  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dwyl/learn-json-web-tokens

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рд╢реНрди рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╕реНрдерд╛рди рд╣реИ рддрд╛рдХрд┐ рдореИрдВ рд╕реАрдЦ рд╕рдХреВрдВ! рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдирдпрд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓рд╛рднреЛрдВ рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред рдЙрд╕ рдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рдЬрд╛рдирдирд╛ рд╡рд╛рдХрдИ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдПрдкреАрдЖрдИ рд╣реИ рдЬреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЗрдХрд╛рдИ рдореЗрд░реЗ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреА рд╣реИ рддреЛ рдореИрдВ рдПрдХ рд╕рд╛рде рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдирдХрд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╕реЗ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ 401 рдХреЗ рдмрд┐рдирд╛ рдЕрдкрдиреЗ рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@ rhewitt22 рд╣рдо @walling . рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ
(рдЬрд╣рд╛рдВ рдкрд░реАрдХреНрд╖рдг рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХреА рд╕реЗ "рдЗрдХрд╛рдИ" рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрдЬрд╛рдп "рдПрдХреАрдХрд░рдг" рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ)
_рдареАрдХ_рдЙрд╕ рдХрд╛рд░рдг рд╕реЗред рдЖрдк рдЬреЛ рдХреБрдЫ рднреА рдордЬрд╛рдХ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ "_fake_" рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЖрдкрдХреЛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдХрдм рдХреБрдЫ "_real_" рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ (_so рдмрдЧ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ_)ред

рд╣рдореЗрдВ (_large_) рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд▓реЛрдЧ _рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрдм рд╡реЗ рддрд░реАрдХреЗ рдмрджрд▓рддреЗ рд╣реИрдВ рддреЛ рдореЙрдХ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд░реАрдХреНрд╖рдг _рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛_ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ; рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреБрдГрд╕реНрд╡рдкреНрди _!

рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдкреВрдЫреЗрдВ: "_( рдХреНрдпреЛрдВ ) рдХреНрдпрд╛ рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдордЬрд╝рд╛рдХ рдЙрдбрд╝рд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ?_"

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдордЬрд╝рд╛рдХ рдЙрдбрд╝рд╛ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдХреЛрдИ рддреГрддреАрдп рдкрдХреНрд╖ рд╕реЗрд╡рд╛ рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдг,
рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЕрдкрдиреЗ _рдЦреБрдж рдХреЗ рдвреЗрд░_ рдХрд╛ рдордЬрд╛рдХ рдЙрдбрд╝рд╛ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЪреАрдЬреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...

рдЖрдкрдХреЗ _question_ рдореЗрдВ рд╕реБрд░рд╛рдЧ " _API _" рд╢рдмреНрдж рдореЗрдВ рд╣реИ, рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк "рдЗрдХрд╛рдИ" рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдПрдХ (API) "_ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ _" рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдПрдВрдбрдкреЙрдЗрдВрдЯ рдорд╛рд░реЛ рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЛ 401 рдорд┐рд▓рддрд╛ рд╣реИ рддреЛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ _рдкреНрд░рдорд╛рдгреАрдХрд░рдг_ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ! (_рдЕрдЪреНрдЫреА рдЦрдмрд░! рдЖрдкрдХрд╛ рдРрдк рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!_)

рдпрд╣рд╛рдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛ _рдХрд╛рд░реНрдп рдЙрджрд╛рд╣рд░рдг _ рд╣реИ рдЬреЛ _ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП _:
https://github.com/dwyl/hapi-auth-jwt2/blob/f17bac65d40b2a9154da84390b874cae4e1de192/test/test.js#L119 -L135

рддрдм рдореИрдВ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛:

рдЯреАрдПрд▓; рдбреЙ

рдпрджрд┐ рдЖрдкрдХрд╛ _рдЕрдкрдирд╛_рдХреЛрдб рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрд╣рд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдорд╣рд╕реВрд╕ рд╣реЛрддреА рд╣реИ, рддреЛ _рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдПрдВ _!!

рд╕рд╛рде рд╣реА, рд╣рдордиреЗ рдЕрдкрдирд╛ hapi-auth-jwt2 рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрд╛ рд╣реИ рддрд╛рдХрд┐ рджреВрд╕рд░реЗ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХреЗрдВред рдФрд░ рдПрдХ _рд▓реАрдирд┐рдпрд░ рд╕реНрдХреЗрд▓реЗрдмрд▓_ рд░реЗрдбрд┐рд╕-рд╕рдорд░реНрдерд┐рдд рдЙрджрд╛рд╣рд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛: https://github.com/dwyl/hapi-auth-jwt2-example рддрд╛рдХрд┐ рд▓реЛрдЧ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ (_tested_) рдХреЛрдб рдХрд░ рд╕рдХреЗрдВ! :рдЖрдБрдЦ рдорд╛рд░рдирд╛:

_рд╣рдо_ рдХреЗрд╡рд▓ рддрдм рдЙрдкрд╣рд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг "_рдлреАрд▓ рдмрд╣реБрдд рдзреАрдореА _" рдЕрдиреНрдпрдерд╛ рд╣рдо _рд╣рдореЗрд╢рд╛_ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рд╛ рдкрд╛рд╕ рдкрд░ _рд╕рдВрднрд╡_ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдЯреИрдХ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ (рдЬрдмрдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдХреЗрд╡рд▓ _рдЖрд╡рд╢реНрдпрдХ_ рддрдХ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реБрдП)ред

рдпрджрд┐ рдЖрдкрдХреЗ рдРрдк рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдХрд┐рд╕реА рддрддреНрд╡ рдХреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ _opportunity_ рд╕реЗ _exercise_ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг/рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ? рдЕрдВрддрдд:, рдпрд╣ рдЬрд╛рдирдирд╛ рдХрд┐ _performant_ рдЖрдкрдХрд╛ рдкреНрд░рдорд╛рдгрди рдХреИрд╕рд╛ рд╣реИ, рдЖрдкрдХреЗ рдРрдк рдХреЗ рд▓рд┐рдП _good_ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдорд╛рдгреАрдХрд░рдг/рд╕рддреНрдпрд╛рдкрди рдЖрдкрдХреЗ рд╕реНрдЯреИрдХ рдореЗрдВ рд╕рдмрд╕реЗ рдмрдбрд╝реА рдмрд╛рдзрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ! (рдпрд╛рдиреА _every_ GET/POST/PUT/DELETE _request_ рдХреЛ рдкреНрд░рдорд╛рдгрди/рд╕рддреНрдпрд╛рдкрди рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХреБрдЫ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП ... рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рдФрд░ рдЖрдкрдХрд╛ рдРрдк _рдирд╣реАрдВ рд╣реЛрдЧрд╛ рд╕реНрдХреЗрд▓_!)

рдпрд╛рдж рд░рдЦреЗрдВ : рдХреБрдЫ рднреА рди рдорд╛рдиреЗрдВ _ рдФрд░ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреИрд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдЕрдкрдирд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдВред рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ "рд╕рд╣реА рддрд░реАрдХрд╛" рд╣реЛрддрд╛, рддреЛ рд╕рднреА рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдЗрд╕реЗ рдкрдврд╝рд╛ рд░рд╣реЗ рд╣реЛрддреЗ ... рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред "рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛" "_pragmatic_" рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ; рд╡рд╣ рдХрд░реЗрдВ рдЬреЛ _your_ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдЙрдореНрдореАрдж рд╣реИ рдХреА рд╡реЛ рдорджрдж рдХрд░рджреЗред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдк рдХрд╣рд╛рдВ рдлрдВрд╕ рдЧрдП рд╣реИрдВ! :+1:

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЦреИрд░, рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╕реБрдЭрд╛рд╡ рд╣реИрдВ рдЬреЛ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  1. рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ _test_ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗрдЯрдЕрдк рдХрд░реЗрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдПрдХ рдЯреЛрдХрди рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░реЗрдВред рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЪрд╛рд▓реВ рд░рдЦреЗрдВред
  2. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╕рдордп рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдмрдВрдж рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рд╛рдкреА рдореЗрдВ рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдпреЛрдЬрдирд╛ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рд╕рд░реНрд╡рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╕рдордп рдирд╣реАрдВ)ред
  3. рд╕реНрдЯреИрдХ рдХрд╛ рдордЬрд╝рд╛рдХ рдЙрдбрд╝рд╛рдПрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдмрд┐рдирд╛ рдХреЗрд╡рд▓ рдирд┐рдпрдВрддреНрд░рдХ рддрд░реНрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рдврд╛рдВрдЪреЗ рдореЗрдВ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдХреБрдЫ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рд╣рдордиреЗ (1) рдЪреБрдирд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг рддрдм рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рддрд░рд╣ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рджрд┐рдЦрддрд╛ рд╣реИ, рди рдХрд┐ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдвреЗрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВред рджреВрд╕рд░реА рдУрд░, рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдмреАрдЪ рдХреЛрдИ рдЕрд╕рдорд╛рдирддрд╛ рдирд╣реАрдВ рд╣реИред

рдпрджрд┐ рдЖрдк рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡реЗрд╢ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╕рдордп рдЖрдк NODE_ENV=test рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (fx. -e рдкреИрд░рд╛рдореАрдЯрд░ рд▓реИрдм рдореЗрдВ )ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдкрдХреЛ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдмрд╣реБрдд рдЕрдзрд┐рдХ рднрд┐рдиреНрди рдирд╣реАрдВ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@ rhewitt22 рд╣рдо @walling . рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ
(рдЬрд╣рд╛рдВ рдкрд░реАрдХреНрд╖рдг рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХреА рд╕реЗ "рдЗрдХрд╛рдИ" рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрдЬрд╛рдп "рдПрдХреАрдХрд░рдг" рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ)
_рдареАрдХ_рдЙрд╕ рдХрд╛рд░рдг рд╕реЗред рдЖрдк рдЬреЛ рдХреБрдЫ рднреА рдордЬрд╛рдХ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ "_fake_" рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЖрдкрдХреЛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдХрдм рдХреБрдЫ "_real_" рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ (_so рдмрдЧ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ_)ред

рд╣рдореЗрдВ (_large_) рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд▓реЛрдЧ _рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрдм рд╡реЗ рддрд░реАрдХреЗ рдмрджрд▓рддреЗ рд╣реИрдВ рддреЛ рдореЙрдХ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд░реАрдХреНрд╖рдг _рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛_ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ; рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреБрдГрд╕реНрд╡рдкреНрди _!

рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдкреВрдЫреЗрдВ: "_( рдХреНрдпреЛрдВ ) рдХреНрдпрд╛ рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдордЬрд╝рд╛рдХ рдЙрдбрд╝рд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ?_"

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдордЬрд╝рд╛рдХ рдЙрдбрд╝рд╛ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдХреЛрдИ рддреГрддреАрдп рдкрдХреНрд╖ рд╕реЗрд╡рд╛ рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдг,
рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЕрдкрдиреЗ _рдЦреБрдж рдХреЗ рдвреЗрд░_ рдХрд╛ рдордЬрд╛рдХ рдЙрдбрд╝рд╛ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЪреАрдЬреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...

рдЖрдкрдХреЗ _question_ рдореЗрдВ рд╕реБрд░рд╛рдЧ " _API _" рд╢рдмреНрдж рдореЗрдВ рд╣реИ, рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк "рдЗрдХрд╛рдИ" рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдПрдХ (API) "_ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ _" рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдПрдВрдбрдкреЙрдЗрдВрдЯ рдорд╛рд░реЛ рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЛ 401 рдорд┐рд▓рддрд╛ рд╣реИ рддреЛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ _рдкреНрд░рдорд╛рдгреАрдХрд░рдг_ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ! (_рдЕрдЪреНрдЫреА рдЦрдмрд░! рдЖрдкрдХрд╛ рдРрдк рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!_)

рдпрд╣рд╛рдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛ _рдХрд╛рд░реНрдп рдЙрджрд╛рд╣рд░рдг _ рд╣реИ рдЬреЛ _ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП _:
https://github.com/dwyl/hapi-auth-jwt2/blob/f17bac65d40b2a9154da84390b874cae4e1de192/test/test.js#L119 -L135

рддрдм рдореИрдВ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛:

рдЯреАрдПрд▓; рдбреЙ

рдпрджрд┐ рдЖрдкрдХрд╛ _рдЕрдкрдирд╛_рдХреЛрдб рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрд╣рд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдорд╣рд╕реВрд╕ рд╣реЛрддреА рд╣реИ, рддреЛ _рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдПрдВ _!!

рд╕рд╛рде рд╣реА, рд╣рдордиреЗ рдЕрдкрдирд╛ hapi-auth-jwt2 рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрд╛ рд╣реИ рддрд╛рдХрд┐ рджреВрд╕рд░реЗ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХреЗрдВред рдФрд░ рдПрдХ _рд▓реАрдирд┐рдпрд░ рд╕реНрдХреЗрд▓реЗрдмрд▓_ рд░реЗрдбрд┐рд╕-рд╕рдорд░реНрдерд┐рдд рдЙрджрд╛рд╣рд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛: https://github.com/dwyl/hapi-auth-jwt2-example рддрд╛рдХрд┐ рд▓реЛрдЧ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ (_tested_) рдХреЛрдб рдХрд░ рд╕рдХреЗрдВ! :рдЖрдБрдЦ рдорд╛рд░рдирд╛:

_рд╣рдо_ рдХреЗрд╡рд▓ рддрдм рдЙрдкрд╣рд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг "_рдлреАрд▓ рдмрд╣реБрдд рдзреАрдореА _" рдЕрдиреНрдпрдерд╛ рд╣рдо _рд╣рдореЗрд╢рд╛_ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рд╛ рдкрд╛рд╕ рдкрд░ _рд╕рдВрднрд╡_ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдЯреИрдХ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ (рдЬрдмрдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдХреЗрд╡рд▓ _рдЖрд╡рд╢реНрдпрдХ_ рддрдХ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реБрдП)ред

рдпрджрд┐ рдЖрдкрдХреЗ рдРрдк рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдХрд┐рд╕реА рддрддреНрд╡ рдХреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ _opportunity_ рд╕реЗ _exercise_ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг/рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ? рдЕрдВрддрдд:, рдпрд╣ рдЬрд╛рдирдирд╛ рдХрд┐ _performant_ рдЖрдкрдХрд╛ рдкреНрд░рдорд╛рдгрди рдХреИрд╕рд╛ рд╣реИ, рдЖрдкрдХреЗ рдРрдк рдХреЗ рд▓рд┐рдП _good_ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдорд╛рдгреАрдХрд░рдг/рд╕рддреНрдпрд╛рдкрди рдЖрдкрдХреЗ рд╕реНрдЯреИрдХ рдореЗрдВ рд╕рдмрд╕реЗ рдмрдбрд╝реА рдмрд╛рдзрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ! (рдпрд╛рдиреА _every_ GET/POST/PUT/DELETE _request_ рдХреЛ рдкреНрд░рдорд╛рдгрди/рд╕рддреНрдпрд╛рдкрди рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХреБрдЫ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП ... рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рдФрд░ рдЖрдкрдХрд╛ рдРрдк _рдирд╣реАрдВ рд╣реЛрдЧрд╛ рд╕реНрдХреЗрд▓_!)

рдпрд╛рдж рд░рдЦреЗрдВ : рдХреБрдЫ рднреА рди рдорд╛рдиреЗрдВ _ рдФрд░ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреИрд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдЕрдкрдирд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдВред рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ "рд╕рд╣реА рддрд░реАрдХрд╛" рд╣реЛрддрд╛, рддреЛ рд╕рднреА рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдЗрд╕реЗ рдкрдврд╝рд╛ рд░рд╣реЗ рд╣реЛрддреЗ ... рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред "рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛" "_pragmatic_" рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ; рд╡рд╣ рдХрд░реЗрдВ рдЬреЛ _your_ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдЙрдореНрдореАрдж рд╣реИ рдХреА рд╡реЛ рдорджрдж рдХрд░рджреЗред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдк рдХрд╣рд╛рдВ рдлрдВрд╕ рдЧрдП рд╣реИрдВ! :+1:

рддреБрдо рджреЛрдиреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╕рд╣рд╛рдпрдХ рд╣реИред рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реЗрдЯрдЕрдк рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдзрд╛рд░ рджреЗрддрд╛ рд╣реИ - рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпреЗ рдЯреБрдХрдбрд╝реЗ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред

рдореИрдВ рдХреЗрд╡рд▓ рдЕрдкрдиреА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ oAuth рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо/рдкрд╛рд╕рд╡рд░реНрдб рдирд╣реАрдВ)ред рдореБрдЭреЗ рдкрд░реАрдХреНрд╖рдг рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЬрд╛рдирдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдкреВрд░реЗ oAuth рдкреНрд░рд╡рд╛рд╣ рд╕реЗ рдирд╣реАрдВ рдЧреБрдЬрд░рдирд╛ рдЪрд╛рд╣рддрд╛, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдПрдХ рдЯреЛрдХрди рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛ рдЬрд┐рд╕реЗ рдореИрдВ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рдРрд╕реЗ рд╕рдВрд╕рд╛рдзрди рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рдкрд░реАрдХреНрд╖рдг рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕рд┐рд░ рд▓рдкреЗрдЯрдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХреЗ?

рдЕрдЧрд░ рдпрд╣ рдореЗрд░реА рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ SailJS v11.0.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ рдореЗрд░реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреА рд╣реИ рдФрд░ рдлрд┐рдХреНрд╕реНрдЪрд░ рдХреЗ рд╕рд╛рде рдЗрди-рдореЗрдореЛрд░реА рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рддрд╛/рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рддреА рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╕реНрдерд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж -- рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдиреЗ рдЗрдЪреНрдЫреБрдХ рд▓реЛрдЧреЛрдВ рдХреЛ рдвреВрдВрдврдирд╛ рдЕрджреНрднреБрдд рд╣реИред

@ rhewitt22 , рдареАрдХ рд╣реИ, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╣реА рдкреЗрд▓реЛрдб рдФрд░ рдЧреБрдкреНрдд рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдПрдХ рдЧреИрд░-рд╕рдорд╛рдкреНрддрд┐ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдЯреЛрдХрди рдмрдирд╛рдиреЗ рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рдерд╛ред рд╢рд╛рдпрдж рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИред

OAuth рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рд╡рд╛рд╣ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреБрдЫ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдВрддрд┐рдо рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╣рд░ рдмрд╛рд░ рдкреНрд░рд╡рд╛рд╣ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИред

рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдПрдХ рдЧреИрд░-рд╕рдорд╛рдкреНрддрд┐ рдЯреЛрдХрди рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдЪрд┐рдВрддрд╛рдУрдВ рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ, рдпрджрд┐ рд╡рд╣ рдЯреЛрдХрди рднреА рдЙрддреНрдкрд╛рджрди рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рддрдм рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЗрд╕ рдЯреЛрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреБрдЫ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдЪрд╛рд╣рддреЗ рд╣реЛрдВ, рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╕рдордп рдЖрдк рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХреНрд▓рд╛рдЗрдВрдЯ рдпрд╛ рдЯреЛрдХрди рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

@рджреАрд╡рд╛рд░рд┐рдВрдЧ

рд╕рд▓рд╛рд╣ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВрдиреЗ рдЕрднреА рдЖрдЧреЗ рдмрдврд╝рдХрд░ рдПрдХ рдирдХрд▓реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдпрд╛, рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ oAuth рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд╣реА JWT (рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рд╕рд╛рде) рджрд┐рдпрд╛ рдЬреЛ рдореИрдВ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдореЗрд░реЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рд╣реЛ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдореИрдВ рдмрд╣реБрдд рдЦреБрд╢ рдЯреВрд░рд┐рд╕реНрдЯ рд╣реВрдВред

:рдореБрд╕реНрдХреБрд░рд╛рдирд╛: :рдореБрд╕реНрдХреБрд░рд╛рдирд╛: :рдореБрд╕реНрдХреБрд░рд╛рдирд╛:

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдРрдк рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрд╡рд░ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдУрдПрде рднрд╛рдЧ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕