如何在路由器之前添加插件Elixir/Phoenix?

Mic*_*cah 8 elixir phoenix-framework

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

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

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

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

(注意:我很确定我能用一条全能的路线处理这个案例,但我只是好奇是否有更好的方法.)

Gaz*_*ler 10

您的路由器将被明确调用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
Run Code Online (Sandbox Code Playgroud)