如何为以太坊身份做一个单独的注册回调



uberauth_identity有一个登录和注册的回调示例,但这会导致糟糕的错误处理。是否有办法做一个单独的注册回调?

我认为这只是发送一个特定参数并通过所有相关调用传播它的问题。我不确定"有多干净"。它最终会变成。

比如说,你的设置和文档中的完全一样:

scope "/auth", MyApp do
  pipe_through :browser
  get "/:provider", AuthController, :request
  get "/:provider/callback", AuthController, :callback
  post "/identity/callback", AuthController, :identity_callback
end

所以当你想强制用户登录时,你将他重定向到以下路由:

Routes.auth_path(@conn, :request, "identity")

的实现方式如下:

defmodule UeberauthExampleWeb.AuthController do
  use UeberauthExampleWeb, :controller
  plug Ueberauth
  alias Ueberauth.Strategy.Helpers
  def request(conn, _params) do
    render(conn, "request.html", callback_url: Helpers.callback_url(conn))
  end
  # ...
end
现在,没有什么可以阻止您添加一些查询参数,使其看起来像这样:
Routes.auth_path(@conn, :request, "identity", login: true)

你可以传播到回调URL:

def request(conn, %{"login" => _}) do
  callback_url = Helpers.callback_url(conn) <> "?login=true"
  render(conn, "request.html", callback_url: callback_url)
end

这样你就可以在回调中进行模式匹配了:

def identity_callback(%{assigns: %{ueberauth_auth: auth}} = conn, %{"login" => _}) do
  # ...
end

相关内容

  • 没有找到相关文章

最新更新