作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
ueberauth_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
关于elixir - 您如何为 ueberauth 身份进行单独的注册回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39907248/
我是一名优秀的程序员,十分优秀!