Phoenix에서 쿠키 얻기/발행
8688 단어 fukuoka.exElixirPhoenix
방문해 주셔서 감사합니다
최근에 쿠키를 사용하고 있습니까?
SPA화가 진행됨에 따라, 보다 간편한 WebStorage나, 브라우저나 PC/스마트폰을 선택하지 않는 「인증+GCS/S3/각종 DB」로의 서버 측에의 유저 데이터 유지가 대두해, 옛날만큼 쿠키를 사용하지 않게 되었다 있습니다.
또한 LiveView를 사용하면 더 이상 프론트 측에 데이터를 넣을 기회 자체가 사라지고 점점 쿠키에서 멀어질 수 있습니다.
그런 가운데, 복수 SaaS를 넘는 시스템간 제휴의 개발에서, 오랜만에 쿠키를 사용하는 요건이 나오고, 「아레?… , 구현했으므로 내용을 공유합니다.
"Phoenix"은 Elixir 웹 프레임 워크입니다.
내용이 재미 있거나 도움이되면 "좋아요"잘 부탁드립니다
본 칼럼의 검증 환경, 사전 구축의 커멘드
본 칼럼은, 이하 환경에서 검증하고 있습니다(Windows에서 실시하고 있습니다만, Linux나 mac에서도 동작한다고 가정합니다)
칼럼의 샘플은 이쪽의 구축 순서로, Phoenix PJ를 구축하고 있는 전제에서 설명합니다.
쿠키 발행 / 취득 처리를 넣는 대상
쿠키는 웹 페이지에서 발행/취득하므로 웹 페이지 관련 처리가 대상입니다.
index.html.eex를 대상으로 해설합니다만, 실제로 코드를 넣는 부분은 컨트롤러가 됩니다.
※변경 전 lib/sample_db_web/controllers/page_controller.exdefmodule SampleDbWeb.PageController do
use SampleDbWeb, :controller
def index(conn, _params) do
render(conn, "index.html")
end
end
쿠키 얻기
첫째, 쿠키를 얻는 것입니다.
conn.cookies에 맵으로서, 모든 쿠키가 저장되어 있으므로, 키 지정하는 것으로, 값을 취득할 수 있습니다
※변경 후 ① lib/sample_db_web/controllers/page_controller.exdefmodule SampleDbWeb.PageController do
use SampleDbWeb, :controller
def index(conn, _params) do
# v---add here
single_signon_id = conn.cookies[ "single_signon_id" ]
# ここに取得したcookieの処理を入れる
render(conn, "index.html")
end
end
간단합니다.
쿠키 발행
다음은 쿠키 발행입니다
conn을 Plug.Conn.put_resp_cookie()에 전달하여 응답에 쿠키를 부여하고 쿠키를 발행할 수 있습니다.
덧붙여 「http_only: false」를 제외하거나, true를 설정하면, 브라우저측에 쿠키를 남기지 않는 발행이 됩니다
※변경 후 ① lib/sample_db_web/controllers/page_controller.exdefmodule SampleDbWeb.PageController do
use SampleDbWeb, :controller
def index(conn, _params) do
# v---add here
conn_cookie = conn |> put_resp_cookie( "single_signon_id", "ThisIsID", [ http_only: false ] )
render(conn_cookie, "index.html")
# ^---modify here
end
end
Elixir처럼 파이프를 사용하여 여러 쿠키를 동시에 발행 할 수 있습니다.
※변경 후② lib/sample_db_web/controllers/page_controller.exdefmodule SampleDbWeb.PageController do
use SampleDbWeb, :controller
def index(conn, _params) do
# v---add here
conn_cookie = conn
|> put_resp_cookie( "single_signon_id", "ThisIsID", [ http_only: false ] )
|> put_resp_cookie( "single_signon_apps", "mail,chat", [ http_only: false ] )
# ^---add here
render(conn_cookie, "index.html")
# ^---modify here
end
end
끝
Phoenix에서 쿠키의 취급에 대해 정리했습니다.
SPA 혹은 서버 사이드 유지가 전성이라고는 말해, 시스템간 제휴나 타사 cookie 이용, 레거시 시스템 접속으로 이용할 기회는 있다고 생각하므로, 기억해 두어 손해는 없을까 생각합니다
p.s.「좋아요」 잘 부탁드립니다
페이지 왼쪽 상단의 또는 을 클릭해 주셔서 감사합니다
여기의 숫자가 늘어나면, 작가로서는 「우케하고 있다」라는 감각을 얻을 수 있어 연재를 더욱 진화시켜 나가는 동기 부여가 되기 때문에, 보다 Elixir 재료를 보고 싶다고 하는 당신, 저희와 함께 북돋워 제발!
Reference
이 문제에 관하여(Phoenix에서 쿠키 얻기/발행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/piacerex/items/46df95fd5c1dd75b3f96
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
defmodule SampleDbWeb.PageController do
use SampleDbWeb, :controller
def index(conn, _params) do
render(conn, "index.html")
end
end
첫째, 쿠키를 얻는 것입니다.
conn.cookies에 맵으로서, 모든 쿠키가 저장되어 있으므로, 키 지정하는 것으로, 값을 취득할 수 있습니다
※변경 후 ① lib/sample_db_web/controllers/page_controller.ex
defmodule SampleDbWeb.PageController do
use SampleDbWeb, :controller
def index(conn, _params) do
# v---add here
single_signon_id = conn.cookies[ "single_signon_id" ]
# ここに取得したcookieの処理を入れる
render(conn, "index.html")
end
end
간단합니다.
쿠키 발행
다음은 쿠키 발행입니다
conn을 Plug.Conn.put_resp_cookie()에 전달하여 응답에 쿠키를 부여하고 쿠키를 발행할 수 있습니다.
덧붙여 「http_only: false」를 제외하거나, true를 설정하면, 브라우저측에 쿠키를 남기지 않는 발행이 됩니다
※변경 후 ① lib/sample_db_web/controllers/page_controller.exdefmodule SampleDbWeb.PageController do
use SampleDbWeb, :controller
def index(conn, _params) do
# v---add here
conn_cookie = conn |> put_resp_cookie( "single_signon_id", "ThisIsID", [ http_only: false ] )
render(conn_cookie, "index.html")
# ^---modify here
end
end
Elixir처럼 파이프를 사용하여 여러 쿠키를 동시에 발행 할 수 있습니다.
※변경 후② lib/sample_db_web/controllers/page_controller.exdefmodule SampleDbWeb.PageController do
use SampleDbWeb, :controller
def index(conn, _params) do
# v---add here
conn_cookie = conn
|> put_resp_cookie( "single_signon_id", "ThisIsID", [ http_only: false ] )
|> put_resp_cookie( "single_signon_apps", "mail,chat", [ http_only: false ] )
# ^---add here
render(conn_cookie, "index.html")
# ^---modify here
end
end
끝
Phoenix에서 쿠키의 취급에 대해 정리했습니다.
SPA 혹은 서버 사이드 유지가 전성이라고는 말해, 시스템간 제휴나 타사 cookie 이용, 레거시 시스템 접속으로 이용할 기회는 있다고 생각하므로, 기억해 두어 손해는 없을까 생각합니다
p.s.「좋아요」 잘 부탁드립니다
페이지 왼쪽 상단의 또는 을 클릭해 주셔서 감사합니다
여기의 숫자가 늘어나면, 작가로서는 「우케하고 있다」라는 감각을 얻을 수 있어 연재를 더욱 진화시켜 나가는 동기 부여가 되기 때문에, 보다 Elixir 재료를 보고 싶다고 하는 당신, 저희와 함께 북돋워 제발!
Reference
이 문제에 관하여(Phoenix에서 쿠키 얻기/발행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/piacerex/items/46df95fd5c1dd75b3f96
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
defmodule SampleDbWeb.PageController do
use SampleDbWeb, :controller
def index(conn, _params) do
# v---add here
conn_cookie = conn |> put_resp_cookie( "single_signon_id", "ThisIsID", [ http_only: false ] )
render(conn_cookie, "index.html")
# ^---modify here
end
end
defmodule SampleDbWeb.PageController do
use SampleDbWeb, :controller
def index(conn, _params) do
# v---add here
conn_cookie = conn
|> put_resp_cookie( "single_signon_id", "ThisIsID", [ http_only: false ] )
|> put_resp_cookie( "single_signon_apps", "mail,chat", [ http_only: false ] )
# ^---add here
render(conn_cookie, "index.html")
# ^---modify here
end
end
Phoenix에서 쿠키의 취급에 대해 정리했습니다.
SPA 혹은 서버 사이드 유지가 전성이라고는 말해, 시스템간 제휴나 타사 cookie 이용, 레거시 시스템 접속으로 이용할 기회는 있다고 생각하므로, 기억해 두어 손해는 없을까 생각합니다
p.s.「좋아요」 잘 부탁드립니다
페이지 왼쪽 상단의 또는 을 클릭해 주셔서 감사합니다
여기의 숫자가 늘어나면, 작가로서는 「우케하고 있다」라는 감각을 얻을 수 있어 연재를 더욱 진화시켜 나가는 동기 부여가 되기 때문에, 보다 Elixir 재료를 보고 싶다고 하는 당신, 저희와 함께 북돋워 제발!
Reference
이 문제에 관하여(Phoenix에서 쿠키 얻기/발행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/piacerex/items/46df95fd5c1dd75b3f96
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Phoenix에서 쿠키 얻기/발행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/piacerex/items/46df95fd5c1dd75b3f96텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)