рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ _amaze_ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рдЕрдореГрдд рдореЗрдВ _first_ рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рд╕реЗ _рд╕рдордЭреЗрдВ_ рдХреИрд╕реЗ JWT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
elixir-example.md
рдирд╛рдордХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦреЗрдВ@RobStallion рд╣рдордиреЗ рдЖрдЬ рдХреЙрд▓ рдкрд░ рдЗрд╕ рдкрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреАред
рдХреГрдкрдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рд╕реНрд╡реАрдХреГрддрд┐ рдорд╛рдирджрдВрдб рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдЖрдкрдХреЛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд▓рдЧреЗред
@nelsonic рдореИрдВ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП /example
рдореЗрдВ рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдореГрдд рдореЗрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЙрд╕рдХрд╛ рд╕рд╛рд░ рдореИрдВ рд╕рдордЭ рдЧрдпрд╛ рд╣реВрдВред
рдЖрдк server.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрдЫ рдорд╛рд░реНрдЧ helper.js рд╕реЗ
рдпрд╣ рд╕рдм рдЕрдореГрдд рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕реАрдзрд╛ рд╣реИ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдПрдХ phx рд╕рд░реНрд╡рд░ рдХреЗ рдмрд┐рдирд╛ рднреА)ред
рдореБрдЭреЗ рдХреБрдЫ рдкреИрдХреЗрдЬ/рдореЙрдбреНрдпреВрд▓ рдорд┐рд▓реЗ рд╣реИрдВ рдЬреЛ рдЕрдореГрдд рдореЗрдВ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рд╡реЗ:
jason
ред рдХрдо рд╕реЗ рдХрдо рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдХреНрд╕рд░ рдЕрджреНрдпрддрди/рд░рдЦрд░рдЦрд╛рд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред)рдЕрдм рддрдХ рдореИрдВрдиреЗ рдХреЗрд╡рд▓ joken
рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдмрдирд╛рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рдерд╛ ...
{:ok, token, _} = LearnJwt.Token.generate_and_sign(%{user_id: 1})
IO.inspect(token)
LearnJwt.Token.verify_and_validate!(token)
|> IO.inspect(label: "===> ")
рд▓реЙрдЧ ....
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJhdWQiOiJKb2tlbiIsImV4cCI6MTU1MzYzODYyMCwiaWF0IjoxNTUzNjMxNDIwLCJpc3MiOiJKb2tlbiIsImp0aSI6IjJtN3BuMnQ2MDBmMWN1Z3ZlazAwMDA1MyIsIm5iZiI6MTU1MzYzMTQyMH0.HQ-AQjvnIO7tIJF2joB45BJj7oLEznYSKUHZdMf9qe0"
===> : %{
"aud" => "Joken",
"exp" => 1553638620,
"iat" => 1553631420,
"iss" => "Joken",
"jti" => "2m7pn2t600f1cugvek000053",
"nbf" => 1553631420,
"user_id" => 1
}
verify_and_validate
рдлрд╝рдВрдХреНрд╢рди рдпрд╣ рднреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ JWT рдХреЗ рд╕рд╛рде рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИред рдпрджрд┐ рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░рд╣рд╕реНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рд░рд╣рд╕реНрдп рд╕реЗ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ ...
config/dev.exs
config :joken,
default_signer: "secret",
testing: "test"
some_controller
{:ok, token2, _} = LearnJwt.Token.generate_and_sign(%{user_id: 1}, :testing)
LearnJwt.Token.verify_and_validate!(token2)
рд╣рдореЗрдВ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ ...
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдмрдирд╛рдиреЗ рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрд┐рд╕ рднрд╛рдЧ рдХреЛ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдЙрд╕реЗ рдХреИрд╕реЗ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдП, рдпрд╣ рд╣реИ , рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рднреЗрдЬрдирд╛ред
рдореИрдВ рдЗрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд░реЗрдВрдбрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрд╕рд╛рдЗрди рддрд░реНрдХ рдореЗрдВ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреИрд╕реЗ ...
render(conn, "index.html", jwt: token)
рдХрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рд╣рдо рдЗрд╕реЗ localStorage
рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдпрд╣ рдирд╣реАрдВ рдЫреБрдЖ рд╣реИ рдХрд┐ рд╣рдо рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рд╡рд╛рдкрд╕ рдХреИрд╕реЗ рднреЗрдЬреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рд╕рд╛рдордиреЗ рдХреЗ рдЫреЛрд░ рдкрд░ рдЬреЗрдПрд╕ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдлреАрдирд┐рдХреНрд╕ рд░реВрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ "рд╕рд╛рдл" рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред (рдореИрдВрдиреЗ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рд╡рд╛рдкрд╕ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдлреАрдирд┐рдХреНрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлреАрдирд┐рдХреНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ "рд╕рд╛рдл" рдирд╣реАрдВ рд╣реИ)
@RobStallion рдХреГрдкрдпрд╛ JTW рдХреЛ auth_token
рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП https://hexdocs.pm/plug/Plug.Conn.html put_private/3
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ _рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ ред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ: /lib/expected/plugs.ex#L88
LMK рдпрджрд┐ рдЖрдк рдЖрдЬ рд╕реБрдмрд╣ рдХрд┐рд╕реА рднреА рд╕рдордп рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рдирд╛ + рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред ЁЯдЩ
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рдкрдврд╝рд╛ рд╣реИ: https://hexdocs.pm/plug/Plug.Session.COOKIE.html ? ЁЯТн
рдЕрднреА рдХреЗ рд▓рд┐рдП рдЗрд╕рд╕реЗ рдЫреЛрдЯрд╛ рдмреНрд░реЗрдХ рд▓реЗ рд░рд╣реЗ рд╣реИрдВред рдПрдХ рджреЛ рджрд┐рдиреЛрдВ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рдкрдврд╝рд╛ рд╣реИ: https://hexdocs.pm/plug/Plug.Session.COOKIE.html ? ЁЯТн