我正试图在应用程序中实现Canary,但遇到了一个问题。文档(https://github.com/cpjk/canary#overriding-默认用户(说我需要在CCD_ 1中有当前用户的Ecto记录。由于我使用的是Guardian,我的当前用户存储在Guardian.Plug.current_resource(conn)
中。让canary知道这是我存储当前用户的地方的最佳方式是什么?
我不能使用config :canary, current_user: :my_user_key
,因为它甚至不在conn.assigns
中。
感谢您的帮助!
在本文之后,您应该为它创建一个插件:
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