私はElixirで残りのAPIを実装しています。ユーザーを認証するために、各要求にAPIキーが渡されます。フェニックスのREST APIのヘッダーベース認証
defmodule MyApp.ApiSecurity do
def init(options) do
options
end
def call(conn, _opts) do
# checking if "api-key" headers exists
# and key is valid
# .... what's next?
# if it's a) valid
# b) invalid or there's no "api-key" header
# ???
end
end
私は状態とセッションの通常、フォームベースの認証のためにそれを実装する方法を知っている:プラグインでは、私は、この持っています。しかし、残りのapiにはセッションがありません。それから、私はどうしたらいいですか?言い換えれば、a)api-keyが有効な場合、関数 "call"の残りの部分には何があるべきですか?b)無効ですか?
はい、しかし、 '|>割り当て(:user_idは、USER_IDは)'それをセッションに挿入します。したがって、状態を作成します。残りの部分には状態があってはいけません、そうですか? – Otoma
'assign'はセッションに挿入しません(' put_session'です)。 'assign'はその値をメモリの' conn'にのみ挿入し、 'conn'がガベージコレクトされると(通常はレスポンスがクライアントに送られた直後に)永久に削除されます。 – Dogbert
コントローラからその格納された値にどのようにアクセスすればよいでしょうか? – Otoma