gesetzt war ich unter der Annahme, dass create_session
wenn die endpoint.ex den Cookie Speicher verwenden konfiguriert wurde, würde setzen Sie den SET-COOKIE
Response-Headercreate_session nicht Set-Cookie-Header
# The session will be stored in the cookie and signed,
# this means its contents can be read but not tampered with.
# Set :encryption_salt if you would also like to encrypt it.
plug Plug.Session,
log: :debug,
store: :cookie,
key: "some_key",
signing_salt: "some_salt"
das ist mein Authentifizierungs Controller (nur ein Teil davon)
def callback(%{ assigns: %{ ueberauth_auth: auth } } = conn, params) do
params = build_params(auth)
user = find_or_create_user params
conn = put_session(conn, :current_user, user)
IO.inspect conn.resp_headers
IO.inspect get_session(conn, :current_user)
render conn, "index.html"
#Helpers.redirect!(conn, "/")
end
def build_params(auth) do
%{email: auth.info.email, github_token: auth.credentials.token, github_user: auth.info.nickname}
end
def find_or_create_user(params) do
case DBRepo.get_by(User, email: params.email) do
nil ->
User.changeset(%User{}, params)
|> DBRepo.insert
results ->
results
end
end
012 inIO.inspect conn.resp_headers
resp_headers
weil
Plug.Session
Sätze
kehrt
[{"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "vh8l2deodne1k2iloa4c3e4qdpmh857n"}, {"x-frame-options", "SAMEORIGIN"}, {"x-xss-protection", "1; mode=block"}, {"x-content-type-options", "nosniff"}]
IO.inspect get_session(conn, :current_user)
bringt den Benutzer als
Wo ist 'create_session' definiert? Es muss ein Conn zurückgegeben werden. In diesem Fall sollten Sie es zurück zuweisen ('conn = case find_user (...) do ... end'), weil Elixir-Strukturen unveränderlich sind. – Dogbert
Existiert der Cookie in der tatsächlichen Antwort, die an den Browser gesendet wird? Plug.Session stellt den tatsächlichen Sitzungscookie kurz vor dem Senden der Antwort ein (mit 'register_before_send'), damit er nicht in' conn.resp_headers' erscheint, aber er sollte vorhanden sein, wenn Sie eine echte Anfrage stellen. – Dogbert
ok ich habe es herausgefunden, ich konnte den Cookie nicht sehen, weil es httpOnly war: true danke für die Hilfe. möchten Sie eine Antwort mit all diesen Informationen machen und es als beantwortet markieren :) – Billybonks