0

我正在尝试在我的应用程序中实现 Canary,但遇到了一个问题。文档(https://github.com/cpjk/canary#overriding-the-default-user)说我需要为当前用户在conn.assigns.current_user. 由于我使用的是 Guardian,因此我当前的用户存储在Guardian.Plug.current_resource(conn). 让金丝雀知道这是我存储当前用户的最佳方式是什么?

我不能使用,config :canary, current_user: :my_user_key因为它甚至不在conn.assigns.

帮助表示赞赏!

4

1 回答 1

2

按照这篇文章,您应该为此创建一个插件:

defmodule MyApp.Plug.CurrentUser do
  def init(opts), do: opts

  def call(conn, _opts) do
    current_user = Guardian.Plug.current_resource(conn)
    Plug.Conn.assign(conn, :current_user, current_user)
  end
end

并将其放入路由器管道中:

pipeline :require_login do
  plug Guardian.Plug.EnsureAuthenticated, handler: MyApp.GuardianErrorHandler
  plug MyApp.Plug.CurrentUser
end
于 2020-04-20T13:23:13.990 回答