【问题标题】:current_user in Phoenix controller passed by Plug凤凰控制器中的 current_user 由 Plug 传递
【发布时间】:2016-01-22 09:53:23
【问题描述】:

将此代码示例作为Plug处理身份验证:

defmodule Financeweb.APIAuth do
...

  def call(conn, _opts) do
  ...

    if authenticated_user do
      conn
      |> assign(:current_user, user)
    else
      conn
      |> send_resp(401, "{\"error\":\"unauthorized\"}")
      |> halt
    end
  end
end

所以,我通过Plug.Conn.assign/3 将变量current_user 传递到下游。在 Phoenix 控制器中获取此变量的最佳方法是什么?我正在这样做(下面的代码),但我确信有更好的方法来做到这一点。

def index(conn, _) do
  user_id = conn.assigns.current_user.id 
end

【问题讨论】:

    标签: elixir phoenix-framework


    【解决方案1】:

    覆盖action/2 并注入它:

    def action(conn, _) do
      apply(__MODULE__, action_name(conn),
        [conn, conn.params, conn.assigns.current_user])
    end
    
    def index(conn, _params, current_user) do
      ...
    end
    
    def show(conn, _params, current_user) do
      ...
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多