如何在路由器前添加 Elixir / Phoenix 插件?
How to add a Plug in Elixir / Phoenix before the Router?
有没有办法在路由器选择 controller/action 之前插入一个插头到 运行?我有一个应用程序可以重定向到特定子域的根路径,而不管这些域的当前路径如何。所以:
sub.myapp.com/foo/bar
应该重定向到 sub.myapp.com/
但是,默认情况下,路由器说 /foo/bar
没有路径,它会停止执行我的插件,这意味着它永远不会命中我的重定向。
有没有办法在路由器选择 action/controller 之前插入我的插头?
(注意:我很确定我可以用 处理这种情况,但我只是想知道是否有更好的方法。)
您的路由器在 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
有没有办法在路由器选择 controller/action 之前插入一个插头到 运行?我有一个应用程序可以重定向到特定子域的根路径,而不管这些域的当前路径如何。所以:
sub.myapp.com/foo/bar
应该重定向到 sub.myapp.com/
但是,默认情况下,路由器说 /foo/bar
没有路径,它会停止执行我的插件,这意味着它永远不会命中我的重定向。
有没有办法在路由器选择 action/controller 之前插入我的插头?
(注意:我很确定我可以用
您的路由器在 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