Feathers: рддрд╛рдЬрд╝рд╛ рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 22 рджрд┐рд╕ре░ 2015  ┬╖  64рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: feathersjs/feathers

рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ <loginEndpoint>/refresh рдПрдХ рд╡реИрдз рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЯреЛрдХрди рдкреЛрд╕реНрдЯ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рд░рд┐рдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХрд╛ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
https://auth0.com/learn/refresh-tokens

Authentication Feature

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

рдЬрдм рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдРрдкреНрд╕ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ рддреЛ рдпрд╣ рдлреАрдЪрд░ рдЬрд░реВрд░реА рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрдм рд╡рд╣ рдХрдИ рд╣рдлреНрддреЛрдВ рдХреЗ рдмрд╛рдж рдРрдк рдЦреЛрд▓рддрд╛ рд╣реИ рддреЛ рд╡рд╣ рдЕрднреА рднреА рд▓реЙрдЧ рдЗрди рд╣реЛрдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред

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

:+1: @corymsmith рдФрд░ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рдереЗред "рдЫреБрдЯреНрдЯрд┐рдпреЛрдВ" рдкрд░ рдлрд┐рдирд┐рд╢ рд▓рд╛рдЗрди рдкрд░ рдЗрд╕рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдХрд┐рдХ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред

рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рд╕рдорд░реНрдерди рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП decoupling рд╢рд╛рдЦрд╛ рдореЗрдВ рднреА рд╕рдорд░реНрдерди рд╣реИред рдЯреЛрдХрди рд░реАрдлреНрд░реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ 2 рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:

  1. рдЖрдк рдИрдореЗрд▓/рдкрд╛рд╕рд╡рд░реНрдб, рдЯреНрд╡рд┐рдЯрд░ рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╛ рддреЛ рдкреБрдирдГ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  2. рдЖрдк GET /auth/token/refresh рдПрдХ рд╡реИрдз рдЯреЛрдХрди рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЯреЛрдХрди рдирд╡реАрдиреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддрд╛рдЬрд╝рд╛ рдЯреЛрдХрди рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП Auth0 рд▓рд┐рдВрдХ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдЧрд┐рдЯрд╣рдм рдСрде рдХреЛрдб/рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рдорд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдПрдХ рдирдпрд╛ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рднрд▓реЗ рд╣реА рдЖрдкрдХрд╛ JWT рдЯреЛрдХрди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рддрд╛рдЬрд╝рд╛ рдЯреЛрдХрди рд╣реИ рддреЛ рдЖрдк рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд┐рд░ рд╕реЗ рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рднреА рд╕рдордп рдирд┐рд░рд╕реНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдХрдо рд╕реЗ рдХрдо, рдореИрдВ Auth0 рд▓реЗрдЦ рд╕реЗ рдпрд╣реА рдПрдХрддреНрд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЖрд╣ рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ @marshallswainред рдорд╛рди рд▓реАрдЬрд┐рдП рдореБрдЭреЗ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛: рдкрд▓рдХ:

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдХрдЯ рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ 1.0 рдореАрд▓ рдХрд╛ рдкрддреНрдерд░ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╕ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред

рдореИрдВ рдереЛрдбрд╛ рд╡реЛрдЯ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдЗрд╕реЗ feathers-authentication 2.0 рдЪреАрдЬ рдмрдирд╛рддреЗ рд╣реИрдВред

рдорд╣рд╛рди рджрд┐рдорд╛рдЧред

рдореИрдВ рдЕрднреА рднреА рдХрд╛рдлреА рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдЕрднреА рдЬреЛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╣реИред
1.) рдЧреНрд░рд╛рд╣рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рднреЗрдЬреЗрдВ

 curl -X POST https://xxx/auth/local   -H "Content-Type: application/json"   -d '{ "email":"xxx", "password":"yyy"}'

рдпрд╣ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдЯреЛрдХрди рджреЗрддрд╛ рд╣реИред

{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJfaWQiOiI1NzhhNjUyN2RkMTZiMjIwMDRhY2ZjNmEiLCJpYXQiOjE0NzAzMjYyODUsImV4cCI6MTQ3MDQxMjY4NSwiaXNzIjoiZmVhdGhlcnMifQ.OVvQbnxfoDGxPFm3Y6tBhRae2Qa6_mDq-PVIo8RcC8Y"}

2.) рдлрд┐рд░, рдореИрдВрдиреЗ рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЯреЛрдХрди рдХреЛ Authorizatin http рд╢реАрд░реНрд╖рд▓реЗрдЦ рдореЗрдВ рд░рдЦрд╛ рд╣реИред

curl -X GET https://xxx/users  -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJfaWQiOiI1NzhhNjUyN2RkMTZiMjIwMDRhY2ZjNmEiLCJpYXQiOjE0NzAzMjU1NzYsImV4cCI6MTQ3MDQxMTk3NiwiaXNzIjoiZmVhdGhlcnMifQ._CHdx3RpEuI189t90mXq-IMPXRNuoVh7nBwY1ON7xCY'

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

curl -X GET https://xxx/auth/token/refresh  -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJfaWQiOiI1NzhhNjUyN2RkMTZiMjIwMDRhY2ZjNmEiLCJpYXQiOjE0NzAzMjU1NzYsImV4cCI6MTQ3MDQxMTk3NiwiaXNzIjoiZmVhdGhlcnMifQ._CHdx3RpEuI189t90mXq-IMPXRNuoVh7nBwY1ON7xCY'
{"query":{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJfaWQiOiI1NzhhNjUyN2RkMTZiMjIwMDRhY2ZjNmEiLCJpYXQiOjE0NzAzMjU1NzYsImV4cCI6MTQ3MDQxMTk3NiwiaXNzIjoiZmVhdGhlcnMifQ._CHdx3RpEuI189t90mXq-IMPXRNuoVh7nBwY1ON7xCY"},"provider":"rest","token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJxdWVyeSI6eyJ0b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSklVekkxTmlKOS5leUpmYVdRaU9pSTFOemhoTmpVeU4yUmtNVFppTWpJd01EUmhZMlpqTm1FaUxDSnBZWFFpT2pFME56QXpNalUxTnpZc0ltVjRjQ0k2TVRRM01EUXhNVGszTml3aWFYTnpJam9pWm1WaGRHaGxjbk1pZlEuX0NIZHgzUnBFdUkxODl0OTBtWHEtSU1QWFJOdW9WaDduQndZMU9ON3hDWSJ9LCJwcm92aWRlciI6InJlc3QiLCJ0b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSklVekkxTmlKOS5leUpmYVdRaU9pSTFOemhoTmpVeU4yUmtNVFppTWpJd01EUmhZMlpqTm1FaUxDSnBZWFFpT2pFME56QXpNalUxTnpZc0ltVjRjQ0k2TVRRM01EUXhNVGszTml3aWFYTnpJam9pWm1WaGRHaGxjbk1pZlEuX0NIZHgzUnBFdUkxODl0OTBtWHEtSU1QWFJOdW9WaDduQndZMU9ON3hDWSIsImRhdGEiOnsiX2lkIjoiNTc4YTY1MjdkZDE2YjIyMDA0YWNmYzZhIiwiaWF0IjoxNDcwMzI1NTc2LCJleHAiOjE0NzA0MTE5NzYsImlzcyI6ImZlYXRoZXJzIiwidG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKZmFXUWlPaUkxTnpoaE5qVXlOMlJrTVRaaU1qSXdNRFJoWTJaak5tRWlMQ0pwWVhRaU9qRTBOekF6TWpVMU56WXNJbVY0Y0NJNk1UUTNNRFF4TVRrM05pd2lhWE56SWpvaVptVmhkR2hsY25NaWZRLl9DSGR4M1JwRXVJMTg5dDkwbVhxLUlNUFhSTnVvVmg3bkJ3WTFPTjd4Q1kifSwiaWF0IjoxNDcwMzI2NDQyLCJleHAiOjE0NzA0MTI4NDIsImlzcyI6ImZlYXRoZXJzIn0.TqUv3051TTGbX4cPfkN-6pOOB5SN9nH-E7TU1HHSsb8","data":{"_id":"578a6527dd16b22004acfc6a","iat":1470325576,"exp":1470411976,"iss":"feathers","token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJfaWQiOiI1NzhhNjUyN2RkMTZiMjIwMDRhY2ZjNmEiLCJpYXQiOjE0NzAzMjU1NzYsImV4cCI6MTQ3MDQxMTk3NiwiaXNzIjoiZmVhdGhlcnMifQ._CHdx3RpEuI189t90mXq-IMPXRNuoVh7nBwY1ON7xCY"}}

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЬреАрдм рдЪреАрдЬреЗрдВ рднреА рдореИрдВрдиреЗ рдЗрд╕ рдирдП рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ /auth/token/refresh рдХреЛ рдлрд┐рд░ рд╕реЗ рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред
рдореБрдЭреЗ рдЗрд╕рд╕реЗ рднреА рд▓рдВрдмрд╛ рдЯреЛрдХрди рдорд┐рд▓рд╛ред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд┐рдпрд╛ рдпрд╛ рдЧрд▓рдд рд╕рдордЭрд╛ред рдХреГрдкрдпрд╛ рд╕реБрдЭрд╛рд╡ рджреЗред

@parnurzeal рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рддрд╛рдЬрд╝рд╛ рдЯреЛрдХрди рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред

рдПрдХ рдирдпрд╛ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЕрдкрдиреЗ рдореМрдЬреВрджрд╛ рд╡реИрдз JWT рдХреЗ рд╕рд╛рде /auth/token POST рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдСрде рдореИрдХреЗрдирд┐рдЬреНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧрд┐рди рдХрд░рдирд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рдм рдХреБрдЫ рд╕рд╣реА рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдФрд░ рдореБрдЭреЗ рдХреНрдпрд╛ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛ред

рдЖрдЗрдП рдПрдХ рдЖрд╕рд╛рди рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЬрдм рдореИрдВ abcdefghijklmno (рдХреЗрд╡рд▓ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрдХрд╡рд╛рд╕ рдЯреЛрдХрди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдП рдЯреЛрдХрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реВрдВред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдкрд╕ рдкрд┐рдЫрд▓реЗ рдЯреЛрдХрди рдХрд╛ рдПрдХ рд▓рдВрдмрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ -> abcdefghijklmnopqrstuvwxyz
рдЕрдЧрд░ рдореИрдВ abcdefghijklmnopqrstuvwxyz рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдПрдХ рд▓рдВрдмрд╛ рд╕рдВрд╕реНрдХрд░рдг рдорд┐рд▓реЗрдЧрд╛ ->
abcdefghijklmnopqrstuvwxyz1234567890 рдФрд░ рд▓реВрдк рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИ (рдЕрдзрд┐рдХ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдкрд░ рдХрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдХрд╛ рд▓рдВрдмрд╛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ)ред

рд╕рд╛рде рд╣реА, рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рддреАрди рдЯреЛрдХрди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВред
рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдирдП рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд┐рдЫрд▓рд╛ рдЯреЛрдХрди рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

@parnurzeal рдЬреЛ рдореИрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдкрдиреЗ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рд╕реБрд╡рд┐рдзрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ (рдЕрдм рддрдХ) рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк /auth/token/refresh рд╣рд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЯреЛрдХрди рдмрдврд╝рддрд╛ рд░рд╣рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдбреЗрдЯрд╛ рдХреЛ рдЯреЛрдХрди рдореЗрдВ рд╡рд╛рдкрд╕ рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕реЗ рдЦрддреНрдо рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдирдП рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд┐рдЫрд▓рд╛ рдЯреЛрдХрди рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

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

рд╣рд╛рдп рд╡рд╣рд╛рдБ, рдореИрдВрдиреЗ /auth/refresh/token рдореЗрдВ рджреЗрдЦрд╛ рдФрд░ рдореИрдВ рдРрд╕рд╛ рдХреБрдЫ рд▓реЗрдХрд░ рдЖрдпрд╛:

...
function pick (o, ...props) {
  return Object.assign({}, ...props.map(prop => ({[prop]: o[prop]})));
}

// Provider specific config
const defaults = {
  payload: ['id', 'role'],
  passwordField: 'password',
  issuer: 'feathers',
  algorithm: 'HS256',
  expiresIn: '1d', // 1 day
};
...
// GET /auth/token/refresh
  get (id, params) {
    if (id !== 'refresh') {
      return Promise.reject(new errors.NotFound());
    }

    const options = this.options;

    // Add payload fields
    const data = pick(params.payload, options.payload);

    return new Promise(resolve => {
      jwt.sign(data, config.get('auth').token.secret, options, token => {
        return resolve({token: token});
      });
    });

  }

рдХреНрдпрд╛ рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╣реБрдд рднреЛрд▓рд╛ рд╣реИ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдореИрдВ рдкреЙрд▓рд┐рд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдкреАрдЖрд░ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВред

@aboutlo рдкреНрд░рдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! v0.8 рдХреЗ рдмрд╛рд╣рд░ рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ (рдпрд╣ рдЕрднреА рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЕрд▓реНрдлрд╛ рдореЗрдВ рд╣реИ) рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХрдИ рдмрджрд▓рд╛рд╡ рд╣реБрдП рд╣реИрдВ рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдорд╛рд░реНрдЧ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рджреВрд░ рд╣реЛ рдЬрд╛рдПред
рдореИрдВ рдЖрдЬ рдПрдХ рдмреАрдЯрд╛ рд░рд┐рд▓реАрдЬрд╝ рдХрд╛рдЯ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЧрд╛рдЗрдб рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рддреЛ рдпрд╣ рд▓рдВрдмрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ v0.8 auth рдХреЗ рд╕рд╛рде рдХрдИ рдореМрдЬреВрджрд╛ рдореБрджреНрджреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╣рдордиреЗ рдЯреЛрдХрди рд░реАрдлреНрд░реЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕реЛрдЪрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдмрд╛рд░ 0.8 рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж (рдЗрд╕ рд╕рдкреНрддрд╛рд╣) рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рд╕рдВрднрд╡рдд: рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рдЪрд╛рд░ рд░рдЦреВрдВрдЧрд╛ред

рдХрд╛рдлреА рдЙрдЪрд┐рдд @ekryski , рдореИрдВ 0.8 рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реВрдВрдЧрд╛ :)

рдЬрдм рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдРрдкреНрд╕ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ рддреЛ рдпрд╣ рдлреАрдЪрд░ рдЬрд░реВрд░реА рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрдм рд╡рд╣ рдХрдИ рд╣рдлреНрддреЛрдВ рдХреЗ рдмрд╛рдж рдРрдк рдЦреЛрд▓рддрд╛ рд╣реИ рддреЛ рд╡рд╣ рдЕрднреА рднреА рд▓реЙрдЧ рдЗрди рд╣реЛрдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред

@deiucanta рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ [email protected] рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рд╣реИ

рдпреЗ рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИ! рдЙрд╕рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░

@marshallswain рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рдЕрдкрдбреЗрдЯ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рд╣рдо рдХрдм рдЗрд╕рдХреА рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рд░реА рд╣реИ? рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рджред

@deiucanta рдЗрд╕ рдмреАрдЪ, рдЬрдм рддрдХ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЬрд╛рд░реА рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреА, рдЖрдк рд▓рдВрдмреЗ рд╕рдордп рддрдХ

@atulrpandey рдЗрд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рднреА рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЖрдк рдмрд╕ рдПрдХ рдирдпрд╛ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реБрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдбреАрдмреА рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдмрд╛рд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВред

@petermikitsh рдПрдХ рдФрд░ рдЪреАрдЬ рдЬреЛ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрджрд┐ рдЖрдк рдореЛрдмрд╛рдЗрд▓ рдкрд░ рд╣реИрдВ) рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ clientId рдФрд░ clientSecret рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ рдФрд░ рдпрджрд┐ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЖрдк рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@ekryski рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред
рдпрд╛, рдХреНрдпрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд░реНрдерди рдЬрд╛рд░реА рд╣реЛрдиреЗ рдореЗрдВ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧреЗрдЧрд╛? рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЛрдмрд╛рдЗрд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛!

рддрд╛рдЬрд╝рд╛ рдЯреЛрдХрди рдХреЗ рд╡рд┐рд╖рдп рдкрд░:

рд░рд┐рдлреНрд░реЗрд╢ рдЯреЛрдХрди рдореЗрдВ рдирдИ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЬрдм рднреА рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдПрдХ рдирдпрд╛ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдирдП рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдпрд╛ рдкрд╣рд▓реА рдмрд╛рд░ рдХрд┐рд╕реА рдирдП рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рднреА рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рддреЗ рд╣реИрдВред рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдЖрдорддреМрд░ рдкрд░ рд╕рдЦреНрдд рднрдВрдбрд╛рд░рдг рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдзреАрди рд╣реЛрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рд╡реЗ рд▓реАрдХ рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ https://auth0.com/blog/refresh-tokens-what-are-the-and-when-to-use-them/

рдЗрд╕рд▓рд┐рдП рдЬрд┐рддрдирд╛ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛, рдЙрд╕рд╕реЗ рдЬрд▓реНрджреА рд╣реА рдореИрдВ рдЦреБрдж рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдореЗрдВ рдЖ рдЧрдпрд╛ред рдореИрдВ рд╕рдВрднрд╡рддрдГ рдЗрд╕рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдЪреВрдВрдХрд┐ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдкрд░ рдХреБрдЫ рдмрд╛рдзрд╛рдПрдВ рд╣реЛрдВрдЧреА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕реНрдЯреЛрд░реЗрдЬ рдПрдбрд╛рдкреНрдЯрд░ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА)ред

рдХреНрдпрд╛ рдЖрдк рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдз рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╛ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд▓реМрдЯрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, accessToken )? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Auth0 рдЙрдиреНрд╣реЗрдВ https://auth0.com/learn/refresh-tokens/ рдкрд░ рдЙрдирдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ ( accessToken рдФрд░ refreshToken ) рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ ред

@petermikitsh рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдкрдХреЛ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдз рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ JWT рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЦрд╛рддреЗ рддрдХ рдкрд╣реБрдВрдЪ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред

рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдЖрдо рддреМрд░ рдкрд░ рд▓реЙрдЧрд┐рди/рд╕рд╛рдЗрдирдЕрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд▓реМрдЯрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдЙрди рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╡реЗ рдлрд┐рд░ рд╕реЗ рд▓реЙрдЧрд┐рди/рд╕рд╛рдЗрдирдЕрдк рди рдХрд░реЗрдВ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдирдпрд╛ рд╕рддреНрд░ рдФрд░ рдПрдХ рдирдпрд╛ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рджреЗрддрд╛ рд╣реИред

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

рдХрдо рд╕реЗ рдХрдо рдореИрдВ рдРрд╕рд╛ рд╣реА рдХрд░рддрд╛ рд╣реВрдВред

рдЬрдм рддрдХ рдЖрдк рд░рд┐рдлреНрд░реЗрд╢ рдЯреЛрдХрди рдЬрд╛рд░реА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬрдм рдЖрдк рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рддрдХ рдЬрдм рддрдХ рдЖрдк рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рддрдХ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдз рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@marshallswain

рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ <loginEndpoint>/refresh рдПрдХ рд╡реИрдз рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЯреЛрдХрди рдкреЛрд╕реНрдЯ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рд░реАрдлрд╝реНрд░реЗрд╢ рдЯреЛрдХрди рдХрд╛ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдереЛрдбрд╝рд╛ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ...

рддреЛ рдлрд┐рд░ рдЗрд╕реЗ renew рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рди рдХрд┐ refresh рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП <loginEndpoint>/renew

рдЬреИрд╕рд╛ рдХрд┐ @abhishekbhardwaj рдиреЗ рдХрд╣рд╛

рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди, рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рджреНрд╡рд╛рд░рд╛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо/рдкрд╛рд╕рд╡рд░реНрдб рджреНрд╡рд╛рд░рд╛, рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛/рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рдорд╛рдгреАрдХрд░рдг, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд░рд╣рд╕реНрдп рджреНрд╡рд╛рд░рд╛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ 2 рдХрд╛рд░рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг...

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

https://github.com/phersjs/authentication-jwt/issues/61

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

рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╡рд░реНрддрдорд╛рди рдХреЛрдб рдЖрдзрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдиреНрдпреВрдирддрдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: рд░реАрдлреНрд░реЗрд╢ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реБрдХ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХреЗ рдХрд┐ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдирд┐рд░рд╕реНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЗрд╕рдХреЗ рдкреЗрд▓реЛрдб рдХреЗ рдЕрдВрджрд░ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдХреЗ), рдпрджрд┐ рдпрд╣ рд╣реБрдХ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдбреЙрди ' рдЯреА рдЕрдм рд╕рдорд╛рдкреНрддрд┐ рд╕рдордп рдорд╛рдиреНрдп рдХрд░реЗрдВред

рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдХреБрдЫ рдФрд░ @ arash16 рд╕рдордЭрд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рдпрджрд┐ рдЖрдк рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкреЗрд▓реЛрдб рдореЗрдВ рд░реАрдлреНрд░реЗрд╢-рдЯреЛрдХрди рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд░реАрдлреНрд░реЗрд╢ рдПрдкреАрдЖрдИ рд╕рдорд╛рдкреНрддрд┐ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЖрдкрдиреЗ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЛ "рдЧреИрд░-рд╕рдорд╛рдкреНрддрд┐" рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рд╣реИ

рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирдпрд╛ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣реИ рдирд╛?

рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рднреВрд▓ рд░рд╣рд╛ рд╣реВрдБ?

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

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

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

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

рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрдХреНрд╕реЗрд╕-рдЯреЛрдХрди рдХреЛ рдкреБрд░рд╛рдиреЗ рд╕рддреНрд░-рдХреБрдВрдЬреА рдХреА рддрд░рд╣ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдн рдХреЗ рд╕рд╛рде рдХрд┐ рд╣рдореЗрдВ рд╣рд░ рдмрд╛рд░ рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝реЗрдЧрд╛ (рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛)ред

@ arash16 , рдореБрдЭреЗ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдПрдХреНрд╕реЗрд╕ рдХреЗ рдЕрдВрджрд░ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХрд╛ рдЖрдкрдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдЗрд╕ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХреЛ рдХреИрд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ?

рдореЗрд░реА рд╡рд░реНрддрдорд╛рди рд╕рдорд╕реНрдпрд╛: рдпрджрд┐ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреА рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ, рддреЛ рдкреЗрд▓реЛрдб рдкрдВрдЦреЛрдВ рдХреЗ рд╣реБрдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, @feathersjs/authentication рдкреИрдХреЗрдЬ рдХреЗ verifyJWT() рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП app.service('authentication').hooks({ before: { create: ... } }) рд╢реБрд░реБрдЖрдд рдореЗрдВ?

рдХреНрдпрд╛ рдЕрднреА рдкрдВрдЦреЛрдВ рдореЗрдВ рддрд╛рдЬрд╝рд╛ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рддрд░реАрдХрд╛ рд╣реИ? рдЙрдирдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛?

рд╣реИрд▓реЛ рд╕рднреА рдХреЛ ,

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ (рдпрд╛ рдХреНрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ)ред рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрдм рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛? рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдкрд╛рд╕рдкреЛрд░реНрдЯ рд░рд┐рдлреНрд░реЗрд╢ рдЯреЛрдХрди рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдЙрдкрд▓рдмреНрдз рд╣реИред рдХрд┐рд╕реА рдиреЗ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХреА?
https://github.com/fiznool/passport-oauth2-refresh

рд╣реИрд▓реЛ @daffl ,
рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ Google рд░рдгрдиреАрддрд┐ рдХреЗ рд▓рд┐рдП рдЯреЛрдХрди рд░реАрдлреНрд░реЗрд╢ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ Google рд▓реЙрдЧрд┐рди рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рдирд╣реАрдВ рд╣реЛрдЧрд╛?

рдзрдиреНрдпрд╡рд╛рдж

рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХреЛ рдПрдХреНрд╕реЗрд╕рдЯреЛрдХрди рдХреЗ рдкреЗрд▓реЛрдб рдХреЗ рдЕрдВрджрд░ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛

рддреЛ рдХреЛрдИ рднреА рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдЖрдкрдХреА рдПрдХ рднреА рдПрдХреНрд╕рдкрд╛рдпрд░реНрдб рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рд╣реИ, рд╡рд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдирдП рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреА рдЕрдВрддрд╣реАрди рдЧрд┐рдирддреА рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдпрд╛ рдХреНрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ?

рд░рд┐рдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЙрди рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП!

@deiucanta рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ [email protected] рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рд╣реИ

рдпрд╣ 2016 рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рджреЛрд╕реНрддреЛрдВ, рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рдЗрд╕ рдЖрд╡рд╢реНрдпрдХ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ?

рдирд╣реАрдВ, рдЖрдк рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рд╕рд╛рде рд╣реА, v4 рдкреНрд░реАрд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рд░реАрдлрд╝реНрд░реЗрд╢ рдЯреЛрдХрди рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрднрд╡ рд╣реИрдВред рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХреБрдХрдмреБрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЕрдВрддрд┐рдо рд░рд┐рд▓реАрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдЧреАред

рд╕рд╛рде рд╣реА, v4 рдкреНрд░реАрд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рд░реАрдлрд╝реНрд░реЗрд╢ рдЯреЛрдХрди рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрднрд╡ рд╣реИрдВред

рдХреНрдпрд╛ рдХреЛрдИ рдЕрдиреБрдорд╛рдирд┐рдд рд░рд┐рд▓реАрдЬ рдХреА рддрд╛рд░реАрдЦ рд╣реИ?

рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХреБрдХрдмреБрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЕрдВрддрд┐рдо рд░рд┐рд▓реАрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдЧреАред

рдЬрдм рддрдХ рдпрд╣ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдЬрд╛рд░реА рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреА, рдХреНрдпрд╛ рдЖрдк рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ v4 рдкреНрд░реАрд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

@daffl рдкрд┐рдВрдЧ

рдХреНрдпрд╛ рдЕрднреА рддрдХ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддрд░реАрдХрд╛ рд╣реИ? v4 рдпрд╣рд╛рдБ рд╣реИ рдФрд░ рдореБрдЭреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдХреБрдЫ рднреА рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИ

@daffl рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ

@MichaelErmer рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдк jwt рдХреЛ рдирд╡реАрдиреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдпрд╛ рдХрд┐рд╕реА рднреА рдХрд╕реНрдЯрдо рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрджрд░реНрд╢ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдЖрдВрддрд░рд┐рдХ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрдЗрдП рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдФрд░ рдПрдкреАрдЖрдИ рдХреЗ рдмреАрдЪ рдХрд╣реЗрдВред

function initAuth() {
  return async (ctx) => {
    if (ctx.path !== 'authentication') {
      const [authenticated, accessToken] = await Promise.all([
        ctx.app.get('authentication'),
        ctx.app.authentication.getAccessToken(),
      ]);

      if (!accessToken || !authenticated) {
        const result = await ctx.app.authenticate(apiLocalCreds);
        ctx.params = {
          ...ctx.params,
          ...result,
          headers: { ...(ctx.params.headers || {}), Authorization: result.accessToken },
        };
      } else {
        const { exp } = decode(accessToken);
        const expired = Date.now() / 1000 > exp - 60 * 60;
        if (expired) {
          const result = await ctx.app.authenticate(apiLocalCreds);
          ctx.params = {
            ...ctx.params,
            ...result,
            headers: { ...(ctx.params.headers || {}), Authorization: result.accessToken },
          };
        }
      }
    }
    return ctx;
  };
}

client
  .configure(rest(apiHost).superagent(superagent))
  .configure(auth(authConfig))
  .hooks({ before: [initAuth()] });

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ рдЗрд╕ after рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ v4 authentication рдореЗрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, 20 рджрд┐рдиреЛрдВ рдХреЗ рдмрд╛рдж рдЕрдкрдиреЗ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ...

````рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдХреЙрдиреНрд╕реНрдЯ {рдбреЗрдЯрдЯрд╛рдЗрдо} = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рд▓рдХреНрд╕рди')
рдХрд╛рдВрд╕реНрдЯ рдирд╡реАрдиреАрдХрд░рдг рдХреЗ рдмрд╛рдж = {рджрд┐рди: 20}

рдореЙрдбреНрдпреВрд▓.рдПрдХреНрд╕рдкреЛрд░реНрдЯреНрд╕ = () => {
рд╡рд╛рдкрд╕реА async рдкреНрд░рд╕рдВрдЧ => {
рдЕрдЧрд░ (
рд╕рдВрджрд░реНрдн.рд╡рд┐рдзрд┐ === 'рдмрдирд╛рдПрдВ' &&
рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ === 'рдХреЗ рдмрд╛рдж' &&
рд╕рдВрджрд░реНрдн.рдкрде === 'рдкреНрд░рдорд╛рдгреАрдХрд░рдг' &&
рд╕рдВрджрд░реНрдн.рдбреЗрдЯрд╛ && рд╕рдВрджрд░реНрдн.рдбреЗрдЯрд╛.рд░рдгрдиреАрддрд┐ === 'jwt' &&
рдкреНрд░рд╕рдВрдЧ.рдкрд░рд┐рдгрд╛рдо &&
рд╕рдВрджрд░реНрдн.рдкрд░рд┐рдгрд╛рдо.рдПрдХреНрд╕реЗрд╕рдЯреЛрдХрди) {
// рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЯреЛрдХрди рдХреЛ рдирд╡реАрдиреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдХреЙрдиреНрд╕реНрдЯ рдкреЗрд▓реЛрдб = рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рд╕рдВрджрд░реНрднред рдРрдкред рд╕реЗрд╡рд╛ ('рдкреНрд░рдорд╛рдгреАрдХрд░рдг')ред рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдПрдХреНрд╕реЗрд╕рдЯреЛрдХрди (рд╕рдВрджрд░реНрднред рдкрд░рд┐рдгрд╛рдоред рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди)
рдХрд╛рд╕реНрдЯ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ = рдбреЗрдЯрдЯрд╛рдЗрдоред рдорд┐рд▓рд┐рд╕ рд╕реЗ (рдкреЗрд▓реЛрдб.рдЖрдИрдПрдЯреА * 1000)
const рдирд╡реАрдиреАрдХрд░рдг рдХреЗ рдмрд╛рдж = рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдкреНрд▓рд╕ (рдирд╡реАрдиреАрдХрд░рдг рдХреЗ рдмрд╛рдж)
рдЕрдм рд╕реНрдерд┐рд░рд╛рдВрдХ = рджрд┐рдирд╛рдВрдХ рд╕рдордпред рд╕реНрдерд╛рдиреАрдп ()
рдЕрдЧрд░ (рдЕрдм> рдирд╡реАрдиреАрдХрд░рдг рдХреЗ рдмрд╛рдж) {
рд╕рдВрджрд░реНрдн.рдкрд░рд┐рдгрд╛рдо.рдПрдХреНрд╕реЗрд╕рдЯреЛрдХрди = рдкреНрд░рддреАрдХреНрд╖рд┐рдд рд╕рдВрджрд░реНрдн.рдПрдк.рд╕реЗрд╡рд╛('рдкреНрд░рдорд╛рдгреАрдХрд░рдг')ред createAccessToken({sub: payload.sub})
}
}
рд╡рд╛рдкрд╕реА рдкреНрд░рд╕рдВрдЧ
}
}
````

рдпрд╣ рд╣реБрдХ after рдФрд░ рдЕрдВрддрд┐рдо рд╣реБрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рддрд╛рдХрд┐ рд╕рднреА рд╕рддреНрдпрд╛рдкрди рдЖрджрд┐ рдкрд╛рд╕ рд╣реЛ рдЬрд╛рдПрдВ

рдкрдВрдЦреЛрдВ рдореЗрдВ рддрд╛рдЬрд╝рд╛ рдЯреЛрдХрди рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ?

рдореИрдВ рдЙрд╕ рдкреНрд░рд╢реНрди рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рдкрд╣рд▓реЗ рджреВрд╕рд░рд╛ рдХрд░рддрд╛ рд╣реВрдВред

рддрд╛рдЬрд╝рд╛ рдЯреЛрдХрди рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБред рдХреНрдпрд╛ @m0dch3n рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдорд╛рдзрд╛рди рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ? рдХреНрдпрд╛ рд╣рдореЗрдВ рдЗрд╕реЗ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдкреВрд░рд╛ рд░рд┐рдлреНрд░реЗрд╢рдЯреЛрдХрди рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗрд╡рд▓ рдмреАрдЪ рдХреЗ рд╣рдорд▓реЛрдВ рдореЗрдВ рдЖрджрдореА рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреЗрд╡рд▓ рдереЛрдбрд╝реА рд╕реА рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЕрдЧрд░ рдмреАрдЪ рдХрд╛ рдЖрджрдореА рдПрдХреНрд╕реЗрд╕ рдХреЛ рдЪреБрд░рд╛ рд▓реЗрддрд╛ рд╣реИ рддреЛ рд╡рд╣ рдХрдо рд╕реЗ рдХрдо рдЗрд╕реЗ рд░реАрдлреНрд░реЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдЕрдирдВрдд рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ XSS рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдорд▓рд╛рд╡рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреБрдЫ рднреА рдЪреЛрд░реА рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИред рддреЛ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рднреА ...

рдЕрдм рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рд╕рдорд╛рдкреНрддрд┐ рд╕рдордп рдХреЛ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рдХрд░ рджреЗрддреЗ рд╣реИрдВ (рдЕрд░реНрдерд╛рдд 5 рдорд┐рдирдЯ), рддреЛ рдЖрдк рдЗрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рд░реАрдлреНрд░реЗрд╢ рднреА рдХрд░рддреЗ рд╣реИрдВред рдмреАрдЪ рдореЗрдВ рдЖрджрдореА рдХреЛ рдХреЗрд╡рд▓ 5 рдорд┐рдирдЯ рдХреЗ рджреМрд░рд╛рди рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд░рд┐рдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ ...

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

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрдм рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ, рддреЛ рдореИрдВ рдкрд┐рдЫрд▓реЗ 40 рджрд┐рдиреЛрдВ рдХреЗ рд╕рднреА рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЛ рдмреНрд▓реИрдХрд▓рд┐рд╕реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреА рд╡реИрдзрддрд╛ 40 рджрд┐рдиреЛрдВ рдХреА рд╣реЛрддреА рд╣реИ ...

HTTPS рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдмреАрдЪ рдХреЗ рд╣рдорд▓реЛрдВ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддреА рд╣реИред рдХреНрдпрд╛ рдЖрдк HTTPS рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдмреЗрд╢рдХ рдореИрдВ https рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдЪреЛрд░реА рдХрд░рдиреЗ рдХреА 3 рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВред рдкрд╣рд▓рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб (XSS рдпрд╛рдиреА) рдкрд░ рд╣реИ, рджреВрд╕рд░рд╛ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдкрд░ (рдмреАрдЪ рдореЗрдВ рдЖрджрдореА), рдФрд░ рддреАрд╕рд░рд╛ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рд╣реИред

рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдкрд░, рдореИрдВ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЖрдзрд╛ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реВрдВ, рдФрд░ рджреВрд╕рд░рд╛ рдЖрдзрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИ, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореЗрд░реЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ XSS рдХреЛ рдЕрд╕рдВрднрд╡ рдмрдирд╛рдХрд░ рдФрд░ https...

рд░рд┐рдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХрд╛ рд▓рдХреНрд╖реНрдп рд╣реИ, рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреА рд╕рдордп рд╕реАрдорд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдкрд░ рд▓рдВрдмреЗ рдпрд╛ рдЕрдирдВрдд рд╡реИрдз рдЯреЛрдХрди рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ред

рддреЛ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рд╕реБрд░рдХреНрд╖рд╛ рд▓рд╛рддрд╛ рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ 100 рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ, рдпрд╛рдиреА, рдЖрдк рдкрд░рд┐рд╡рд╣рди рдкрд░ рд╕рднреА 100 рдХреЛ рдХрдордЬреЛрд░ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ 1 рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ

рддреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдордзреНрдп рд╣рдорд▓реЗ рдореЗрдВ рдПрдХ рдЖрджрдореА, рдПрдХ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдПрдХреНрд╕рдПрд╕рдПрд╕ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ ... рдЗрд╕реЗ рдХреЗрд╡рд▓ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдк рдХрд┐рддрдиреА рдмрд╛рд░ рдЗрд╕ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ ... рдЗрд╕реЗ рдХрдо рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рд▓рд╛рдЧрдд рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╣реИ рдХрд┐ рдПрдХреНрд╕реЗрд╕рдЯреЛрдХрди рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╡реИрдз рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ ...

рдореИрдВ рд╕рд┐рд░реНрдл рд╕реНрд▓реИрдХ рдЪреИрдирд▓ рд╕реЗ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдХреЙрдкреА/рдкреЗрд╕реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ:

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

рдпрд╣реАрдВ рд╕реЗ рд░рд┐рдлреНрд░реЗрд╢ рдЯреЛрдХрди рдЖрддрд╛ рд╣реИ, рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЛ рд░рд┐рдлреНрд░реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЯреЛрдХрди рдФрд░ рдпрд╣ рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдЯреЛрдХрди рд╣реИред рдЬрдм рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХ рдирдпрд╛ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХрд╛ рдпрд╣реА рдПрдХрдорд╛рддреНрд░ рдЙрджреНрджреЗрд╢реНрдп рд╣реИред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддреЗ рдХреЗ рд╕рд╛рде рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░реАрдлрд╝реНрд░реЗрд╢ рдЯреЛрдХрди рдирд┐рд░рд╕реНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдФрд░ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХреЗ рдмреАрдЪ рдмрдбрд╝рд╛ рдЕрдВрддрд░ рд╣реИред рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рддрд╛рдЬрд╝рд╛ рдЯреЛрдХрди рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд░реНрд╡рд░ рдХреЛ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рд╕рднреА рддрд╛рдЬрд╝рд╛ рдЯреЛрдХрди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рддрд╛рдЬрд╝рд╛ рдЯреЛрдХрди рд╕реНрдЯреЗрдЯрдлреБрд▓ рд╣реИред рд╕рд░реНрд╡рд░ рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рд╡реИрдз рд╣реИ рдФрд░ рдХреМрди рд╕рд╛ рдЕрдорд╛рдиреНрдп рд╣реИред

рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХреЛ рдареАрдХ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреЛрдХрди рд╕реНрдЯреЛрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рддреАрди рдкреНрд░рд╡рд╛рд╣реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

рдЯреЛрдХрди рд╕рддреНрдпрд╛рдкрди рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдВ
рдорд╛рдиреНрдп рд░реАрдлрд╝реНрд░реЗрд╢ рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рд░реАрдлрд╝реНрд░реЗрд╢ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди
рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд┐рдП рдЧрдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реАрдлрд╝реНрд░реЗрд╢ рдЯреЛрдХрди рдХреЛ рдирд┐рд░рд╕реНрдд рдХрд░реЗрдВ

рдЯреЛрдХрди рдЙрдкрдпреЛрдЧ рдХреЗ рдЖрдБрдХрдбрд╝реЗ рдЬреИрд╕реЗ рдЕрдиреНрдп рдкреНрд░рдмрдВрдзрди рдХрд╛рд░реНрдп рднреА рдЕрдЪреНрдЫреЗ рд╣реИрдВред

рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рд╡рд░реНрддрдорд╛рди рд╕рдордЭ рдКрдкрд░ рд╣реИред рдпрд╣ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдПрдХ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдкрдВрдЦ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рднреА рдХрд╛рд░реНрдпрд╛рддреНрдордХрддрд╛рдУрдВ/рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд░реАрдлреНрд░реЗрд╢-рдЯреЛрдХрди рдХреЛ рдареАрдХ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ:

  1. рд░реАрдлреНрд░реЗрд╢-рдЯреЛрдХрди рд╕реНрдЯреЛрд░: рдкрдВрдЦ рд╕реЗрд╡рд╛ рджреНрд╡рд╛рд░рд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  2. рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдЬрд╛рд░реА рдХрд░рдирд╛ рдФрд░ рдорд╛рдиреНрдп рдХрд░рдирд╛: рдореМрдЬреВрджрд╛ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рд╕рдорд░реНрдерди рдХрд╛ рдлрд┐рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕реЗрд╡рд╛ рд╣реИред

TheSinding (https://github.com/TheSinding/authentication-refresh-token) рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВрдиреЗ рдПрдХ рдХрд╕реНрдЯрдо рд╕реЗрд╡рд╛ рдФрд░ рддреАрди рд╣реБрдХ (https://github.com/) рдХреЗ рд╕рд╛рде рд░рд┐рдлреНрд░реЗрд╢-рдЯреЛрдХрди рдХрд╛ рдЕрдкрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред jackywxd / рдкрдВрдЦ-рд░реАрдлреНрд░реЗрд╢-рдЯреЛрдХрди) рдЬреЛ рдмреБрдирд┐рдпрд╛рджреА рддрд╛рдЬрд╝рд╛-рдЯреЛрдХрди рдХрд╛рд░реНрдпрд╛рддреНрдордХрддрд╛рдУрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ:

  1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд░реАрдлреНрд░реЗрд╢-рдЯреЛрдХрди рдЬрд╛рд░реА рдХрд░реЗрдВ;
  2. рд╡реИрдз рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рд░реАрдлреНрд░реЗрд╢-рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рд░реАрдлреНрд░реЗрд╢ рдХрд░реЗрдВ;
  3. рд░реАрдлреНрд░реЗрд╢-рдЯреЛрдХрди рд╣рдЯрд╛рдХрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧрдЖрдЙрдЯ рдХрд░реЗрдВ

рдлреЗрджрд░реНрд╕ рдореЗрдВ рдореМрдЬреВрджрд╛ рдХреЛрдб рдмреЗрд╕ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рдн рдЙрдард╛рддреЗ рд╣реБрдП, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдбрд┐рдВрдЧ рдкреНрд░рдпрд╛рд╕ рдиреНрдпреВрдирддрдо рд╣реИ, рдФрд░ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдлреЗрджрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдПрдХреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдкрдВрдЦ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдмрд╣реБрдд рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рд╣реИред

рд▓реЗрдХрд┐рди рд░реАрдлреНрд░реЗрд╢-рдЯреЛрдХрди рдХреА рдПрдХ рдкреВрд░реНрдг рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рднреА рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреИрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдореЗрдВ рд╕реНрдЯреЛрд░ рд░реАрдлреНрд░реЗрд╢-рдЯреЛрдХрди, рдПрдХреНрд╕реЗрд╕-рдЯреЛрдХрди рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рдмрд╛рдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреБрди: рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдирд╛, рд░реАрдлреНрд░реЗрд╢-рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рд▓реЙрдЧрдЖрдЙрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ред

рдлреЗрджрд░-рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдФрд░ рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди-рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рд░рд┐рдлреНрд░реЗрд╢-рдЯреЛрдХрди рдХреЛ рдореМрдЬреВрджрд╛ рдлреАрдЪрд░реНрд╕ рдХреЛрдб рдореЗрдВ рдЯреИрдк рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд░рд┐рдлреНрд░реЗрд╢-рдЯреЛрдХрди рд╕рдкреЛрд░реНрдЯ рдХреЛ рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдСрди рдХрд░рдиреЗ рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рд╣реБрдХ рд╕рдВрд╕реНрдХрд░рдг рд░реАрдлреНрд░реЗрд╢-рдЯреЛрдХрди рдХреЛрдб рдмреЗрд╕ рдХреЛ @ рдкрдВрдЦрдЬ/рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЖрдЧреЗ рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдлреАрдЪрд░реНрд╕ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди-рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдореЗрд░рд╛ рдЕрдВрддрд┐рдо рд▓рдХреНрд╖реНрдп рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдореЗрдВ рд░реАрдлреНрд░реЗрд╢-рдЯреЛрдХрди рд╕рдорд░реНрдерди рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реИред

рдореЗрд░рд╛ рдкреНрд░рд╢реНрди/рдЪрд┐рдВрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?

рджреЗрдЦреЗрдВ https://auth0.com/blog/securing-single-page-applications-with-refresh-token-rotation/

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

рджреЗрдЦреЗрдВ https://afteracademy.com/blog/implement-json-web-token-jwt-authentication-using-access-token-and-refresh-token

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

рдХреБрдХреА рдкрд░ рдпрд╣ рд▓рдВрдмреА рдЪрд░реНрдЪрд╛ рджреЗрдЦреЗрдВ - https://github.com/phersjs-ecosystem/authentication/issues/132 рднреА

@bwgjoseph рдореИрдВ рдирд┐рдпрдорд┐рдд рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡

@sarkistlt рдЖрдк рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдкрд░ рд╕рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдЯреЛрдХрди рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЙрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдВрджрд░реНрдн/рд▓реЗрдЦ рд╕рд╛рдордЧреНрд░реА? рдореБрдЭреЗ рдмрд┐рд▓реНрдХреБрд▓ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреИрд╕реА рд╣реЛрдЧреАред рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреНрдпрд╛ рднреЗрдЬрддрд╛ рд╣реИ, рдЬрдм рд╡реЗ рдбреЗрдЯрд╛ (рд╕реАрдЖрд░рдпреВрдбреА) рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ?

@bwgjoseph рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдХреБрдХреА, рдЕрдкрдиреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрд╕ рдмреАрдЪ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

app.use('* | [or specific rout]', session(sess), (req, res, next) => {
      req.feathers.session = req.session || {};
      next();
    });

рдлрд┐рд░ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдореЗрдВ, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рд▓реЙрдЧрд┐рди рд╕реЗрд╡рд╛, рдЬрдм рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рдорд╛рдгрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕рддреНрд░ рдореЗрдВ рдЯреЛрдХрди рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ ctx.params.session.token = token , рдЬрд╣рд╛рдВ рдЯреЛрдХрди рдЖрдкрдХреА рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдПрдХреНрд╕реЗрд╕ рдпрд╛ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рд╣реИ, рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддрд░реНрдХ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдХрд┐рд╕реА рднреА рдирдП рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдЖрдк рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╕рддреНрд░ рдореЗрдВ рдЯреЛрдХрди рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВ рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдУрд░ рд╕реЗ рдХреЛрдИ рднреА рдЯреЛрдХрди рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдЬреЛрдбрд╝реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ (рдмреНрд░рд╛рдЙрдЬрд╝рд░) - рд╕рд░реНрд╡рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╕рд░реНрд╡рд░, рдпрд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛/рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрдЪрд╛рд░ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╕рддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

рдЗрд╕ рдкрд░ рдкрд╣рд▓реЗ _a рдмрд╣реБрдд_ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ (рдореИрдВрдиреЗ рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди рдореЗрдВ рдПрдХ

рдЗрд╕рд▓рд┐рдП рдЖрдорддреМрд░ рдкрд░ рдЯреЛрдХрди рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рдареАрдХ рд╣реЛрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ (рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдкреЗрдЬ рддрдХ рд╣реА рдкрд╣реБрдВрдЪ рд╣реИ) рдФрд░ рдпрд╣ рдЕрдиреНрдп рдЧреИрд░-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо (рдЬреИрд╕реЗ рджреЗрд╢реА рдореЛрдмрд╛рдЗрд▓ рдРрдк, рд╕рд░реНрд╡рд░-рдЯреВ-рд╕рд░реНрд╡рд░ рдЖрджрд┐) рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред __рдФрд░ websockets__ (рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЬреЛрд░ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рдХрд┐ HTTP рдХреБрдХреАрдЬрд╝ рдХреЗ рд╕рд╛рде websockets рдХреЛ рдирд┐рд░реНрдмрд╛рдз рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рджрд░реНрджрдирд╛рдХ рд╣реИ - рдореЗрд░рд╛ рдЬреАрд╡рди рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ)ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рддрд╛рдЬрд╝рд╛ рдЯреЛрдХрди рд░рджреНрдж рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рддрд╛ рд╣реИред

рдХрд┐рд╕реА рднреА рддрд░рд╣, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд╛ рдмрд╣реБрдд рд╕реНрд╡рд╛рдЧрдд рд╣реЛрдЧрд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╡рд░рдг рдХреЛ рдЗрд╕реНрддреНрд░реА рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред

@jackywxd - рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо, рдЗрд╕ рдкрд░ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирдЬрд╝рд░
рдХреНрдпрд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?
рдЬреИрд╕реЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╣реБрдХ рдХреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдирд╛, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдмрд╛рдж рдореЗрдВ рд╣реБрдХ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╣рдо рд╡рд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@daffl рд╣рд╛рдБ рд╕рд╣рдордд рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ WS рдХреЗ рд╕рд╛рдеред рдФрд░ рдпрджрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдмреИрдХрдПрдВрдб рджреЛрдиреЛрдВ рдЖрдкрдХреЗ рдпрд╛ рдЖрдкрдХреА рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╣рд╛рдБ, рдХреЗрд╡рд▓ JWT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рд╕реЗ рдмрдЪрдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреЛрд░рдлреНрд░рдВрдЯ рдЖрд░рдИрдПрд╕рдЯреА-рдПрдкреАрдЖрдИ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреА рдХрдВрдкрдирд┐рдпреЛрдВ/рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдирд┐рдпрдорд┐рдд рд╕рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдПрдХреНрд╕реЗрд╕ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдФрд░ рд░реАрдлреНрд░реЗрд╢ рдХрд░реЗрдВ) ) рдЯреЛрдХрди, рдЗрд╕реЗ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ, рдФрд░ рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдкрд╛рд╕ рдХрд░реЗрдВред рдЬрд┐рд╕реЗ рдкрдВрдЦ рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрдм рдбреЗрд╡рд▓рдкрд░ рдмреИрдХрдПрдВрдб рдХреЗ рдирд┐рд░реНрдорд╛рдг рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡реЗ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмреИрдХрдПрдВрдб рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП request, superagent, fetch or axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдкреАрдЖрдИ рдХреЗ рд╕реНрдЯреЛрд░рдлреНрд░рдВрдЯ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╕реАрдзреЗ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдХреЗ рдмрдЬрд╛рдп рдирд┐рдпрдорд┐рдд рд╕рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рдерд╛ред

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдбрд┐рдЬрд╛рдЗрди рдирд┐рд░реНрдгрдп рдФрд░ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдирд╣реАрдВ рд╣реЛрдЧреА, рдЙрдХреНрдд рд╕реНрдЯреЛрд░рдлреНрд░рдВрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрдкреАрдЖрдИ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдлрд┐рд░ рдЗрд╕ рдирд┐рд░реНрдгрдп рдХреЛ рд╕рдореБрджрд╛рдп рдкрд░ "рдордЬрдмреВрд░" рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдареАрдХ рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдирд╛ рд╣реЛрдЧрд╛?

@TheSinding рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХрдо рдЖрдо рддреМрд░ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 'рдордЬрдмреВрд░' рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдХреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░реЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ (рдФрд░ рдЕрднреА рднреА рд╣реИ)ред

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

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

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЖрдк рдЧрд▓рдд рдереЗ, рдореИрдВ рдмрд╕ "рдЬрд╝реЛрд░ рд╕реЗ" рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ :)

рдЖрдИрдПрдордУ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдХреЗ рд╕рд╛рде рджреГрд╖реНрдЯрд┐рдХреЛрдг рдПрдХ рдмреЗрд╣рддрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд░реНрдерд┐рдд рд╣реИ рдФрд░ @daffl рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рднреА рдЖрд╕рд╛рди рд╣реИ

рдЕрдкрдиреЗ рд╕рднреА рдлрд╝реАрдбрдмреИрдХ рдХреЗ рд▓рд┐рдП рд╢реБрдХреНрд░рд┐рдпрд╛! JWT рдмрдирд╛рдо рд╕рддреНрд░ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╖рдп рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдо рдЕрд▓рдЧ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

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

@TheSinding рдЖрдкрдХреЗ рдкрд┐рдЫрд▓реЗ рдорд╣рд╛рди рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпреЛрдВрдХрд┐ рдореМрдЬреВрджрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рд░реАрдлреНрд░реЗрд╢-рдЯреЛрдХрди рд╕рдорд░реНрдерди рдХреЛ рдХрдХреНрд╖рд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдХреЗ рдФрд░ рдпреБрдЧрд▓ рд╣реБрдХ рдЬреЛрдбрд╝рдХрд░ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

this.hooks({ after: { create: [issueRefreshToken(), connection('login'), event('login')], remove: [logoutUser(), connection('logout'), event('logout')], patch: [refreshAccessToken()], },

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

@daffl рдбреЗрд╡рд┐рдб, рдкрдВрдЦ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдмрд╕ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдкрдВрдЦреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ "рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛", "рдХреЛрдбрд┐рдВрдЧ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢", "рд╢реИрд▓реА рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛" рд╣реИ?

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди (рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдХреЗрд╡рд▓ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░) рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдПрдХ рдкреАрдЖрд░ рдХрд╛ рдмрд╣реБрдд рд╕реНрд╡рд╛рдЧрдд рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдЕрднреА рддрдХ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рд░реЗрдкреЛ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдореМрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдФрд░ рдпрд╣ рдЪрд░реНрдЪрд╛ рдХрд╛рдлреА рд▓рдВрдмреА рд╣реЛ рд░рд╣реА рд╣реИред рдпрд╣ рд╕рдм рдЕрдк рдЯреВ рдбреЗрдЯ рдФрд░ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╣реЛрдиреЗ рд╕реЗ рдЪреАрдЬреЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдВрдЧреАред рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмреБрд▓реЗрдЯ рдкреЙрдЗрдВрдЯ:

  • рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕реЗрд╡рд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдХреЗ рддрд╛рдЬрд╝рд╛ рдЯреЛрдХрди рдЬрд╛рд░реА рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ
  • рд░рд┐рдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХреЛ рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
  • рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХреЛ рдирд┐рд░рд╕реНрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП https://docs.phersjs.com/cookbook/authentication/revoke-jwt.html рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдирд┐рд░рд╕рди рддрдВрддреНрд░ рдХреЗ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджреНрджреЗрд╢реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)
  • рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рд╕реЗрдЯрдЕрдк рдХреЗ рдХрд╛рд░рдг (рдЬреИрд╕реЗ рдирд┐рд░рд╕реНрдд рдЯреЛрдХрди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдбрд┐рд╕) рдпрд╣ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрд╛рдиреА рдПрдХ рдорд╛рдирдХ рдЬреЗрдирд░реЗрдЯ рдРрдк - рд╕реАрдПрд▓рдЖрдИ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЙрд╕ рдкрд░ рдХреБрдЫ рднреА рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЕрднреА рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╣рд╛рдЗрдЬрди рдЖрдзрд╛рд░рд┐рдд рдЬрдирд░реЗрдЯрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА рддрд▓рд╛рд╢ рдореЗрдВ
  • рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХреА рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓ рд╕рдХрддреА рд╣реИ

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

рдХреЗрд╡рд▓ рдЯреЛрдХрди рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреА рд╣реИ рдЬрдм рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧреАред рд╡рд░реНрддрдорд╛рди рдореЗрдВ Videsk рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА: рдлреНрд░рдВрдЯ рдСрде рд╣реИрдВрдбрд▓рд░

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