Ich arbeite an einer Vanille Elixir/Phoenix-Anwendung und folgte den allgemeinen Schritten in Programming Phoenix Buch, um ein Basiszeichen in & Sign-out-System zu implementieren (siehe Schnipsel unten). Ich sehe jedoch keinen Rat in dem Buch oder online darüber, wie Cookie-basierte Plug-Sitzungen nach einer gewissen Zeit ablaufen. Was sind einige Ansätze für das Timeout von Sitzungen in Phoenix-Apps?Elixir/Phoenix: So implementieren Sie Session Timeout/Ablauf
Hier einige relevante Schnipsel meines nackten Knochen Auth-System:
In endpoint.ex
wird die App konfiguriert, um eine Nur-Lese-Session-Cookie-basierte zu verwenden:
plug Plug.Session,
store: :cookie,
key: "_zb_key",
signing_salt: "RANDOM HEX"
ich einen Stecker schrieb auth.ex
die (unter anderem) in einem authentifizierten Benutzer anmelden, und current_user
basierend auf der Sitzung user_id
in nachfolgenden Anfragen gefunden einstellen:
def login!(conn, user) do
conn
|> assign(:current_user, user)
|> put_session(:user_id, user.id)
|> configure_session(renew: true)
end
# ... more ...
def load_current_user(conn, _opts) do
cond do
conn.assigns[:current_user] ->
conn # If :current_user was already set, honor it
user_id = get_session(conn, :user_id) ->
user = Zb.Repo.get!(Zb.User, user_id)
assign(conn, :current_user, user)
true ->
conn # No user_id was found; make no changes
end
end
# ... more ...