【问题标题】:How to add a Plug in Elixir / Phoenix before the Router?如何在路由器之前添加 Elixir / Phoenix 插件?
【发布时间】:2016-05-15 12:58:50
【问题描述】:

有没有办法在路由器选择控制器/动作之前插入一个插件来运行?我有一个应用程序,它将重定向到特定子域的根路径,而不管这些域上的当前路径如何。所以:

sub.myapp.com/foo/bar 应该重定向到sub.myapp.com/

但是,默认情况下,路由器说没有/foo/bar 的路径,它会停止执行我的插件,这意味着它永远不会命中我的重定向。

有没有办法在路由器选择动作/控制器之前插入我的插头?

(注意:我很确定我可以使用a catch-all route 处理这个案例,但我只是好奇是否有更好的方法。)

【问题讨论】:

    标签: elixir phoenix-framework


    【解决方案1】:

    您的路由器在lib/my_app/endpoint.ex 中被显式调用。在此之前,您可以在该文件中添加任何您喜欢的插件。

    您可以编写一个插件来处理重定向并在调用路由器之前停止连接。

    defmodule HelloPhoenix.Endpoint do
      use Phoenix.Endpoint, otp_app: :hello_phoenix
      plug Plug.RequestId
      plug Plug.Logger
      ...
      plug CustomRedirectPlug # Add your plug here
      plug HelloPhoenix.Router
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-18
      相关资源
      最近更新 更多