在路由器选择 Controller / Action 之前,有什么方法可以插入要运行的插件吗?我有一个应用程序,该应用程序将重定向到特定子域的根路径,而不管这些域上的当前路径如何。所以:
sub.myapp.com/foo/bar应该重定向到sub.myapp.com/
但是,默认情况下,路由器会说没有/foo/bar的路径,并且会停止执行我的插件,这意味着它永远不会影响我的重定向。

有没有一种方法可以在路由器选择操作/ Controller 之前插入我的插头?

(注意:我很确定我可以使用a catch-all route处理这种情况,但是我只是想知道是否有更好的方法。)

最佳答案

您的路由器在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

关于elixir - 如何在路由器之前添加Elixir/Phoenix插件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35226024/

10-10 07:33