在路由器选择控制器/操作之前,是否有任何方法插入要运行的插头?我有一个应用程序,它将重定向到特定子域的根路径,而不管这些域上的当前路径如何。所以:
sub.myapp.com/foo/bar
应该重定向到sub.myapp.com/
但是,默认情况下,路由器说/foo/bar
没有路径,它停止执行我的插件,这意味着它永远不会击中我的重定向。
是否有办法在路由器选择动作/控制器之前插入我的插头?
(注意:我很确定我能用a catch-all route来处理这个案子,但我只是好奇是否有更好的方法。)
发布于 2016-02-05 06:00:46
您的路由器在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
https://stackoverflow.com/questions/35226024
复制相似问题