私は現在、アプリにueberauthとguardianの認証フレームワークを統合しようとしています。私は例を見ています、特にgithubのこの1つ:https://github.com/hassox/phoenix_guardian。アンダースコア接頭辞パラメータ名を持つエリクシール関数 - これはどのように機能しますか?
レンダリングされたWebページが4つのパラメータで認証コントローラを呼び出しますが、ページで2つのパラメータを持つ関数が呼び出される部分があります。
auth_controller.exでは、https://github.com/hassox/phoenix_guardian/blob/ueberauth-guardian/web/controllers/auth_controller.ex
です。 ログイン機能は、それらの2パラメータに接頭辞として下線を有する4つのパラメータを有する:
def login(conn, _params, current_user, _claims) do
render conn, "login.html", current_user: current_user, current_auths: auths(current_user)
end
ログイン機能の呼び出し元、login_bar.html.eex、https://github.com/hassox/phoenix_guardian/blob/ueberauth-guardian/web/templates/layout/login_bar.html.eex
:
<%= if @current_user do %>
<li>
<%= link "Logout", to: auth_path(@conn, :logout), method: :delete, class: "btn btn-danger" %>
</li>
<%= if @conn.request_path != auth_path(@conn, :login, "identity") do %>
<li>
<%= link "Connect", to: auth_path(@conn, :login, "identity"), class: "btn btn-default"%>
</li>
<% end %>
<% else %>
<li>
<%= if @conn.request_path != auth_path(@conn, :login, "identity") do %>
<%= link "Login", to: auth_path(@conn, :login, "identity"), class: "btn btn-primary"%>
<% end %>
</li>
<% end %>
メソッドの一部をエミュレートしようとしますが
、私は次のエラーを見ている:
UndefinedFunctionError at GET /auth/identity
function MyApp.AuthenticationController.login/2 is undefined or private. Did you mean one of:
* login/4
カルシウム誰かがこの仕組みを説明していますか?ありがとう!
忘れてしまいましたが、私はアンダースコアプレフィックスがどのようにパラメータ(無視できる)として機能するかを理解しています。これは、呼び出し元が関数のパラメータを無視できることを意味しますか? –