2016-02-05 60 views
7

有什麼方法可以在路由器選擇控制器/操作之前插入一個插頭來運行?我有一個應用程序將重定向到特定子域的根路徑,而不管這些域中的當前路徑。所以:如何在路由器之前添加Elixir/Phoenix插件?

sub.myapp.com/foo/bar應該重定向到sub.myapp.com/

但是,在默認情況下,路由器說,有對/foo/bar沒有路徑和它停止我的插頭的執行,這意味着它永遠不會打我的重定向。

有沒有辦法在路由器選擇動作/控制器之前插入我的插頭?

(注:我敢肯定,我可以a catch-all route處理這種情況,但我只是好奇,如果有一個更好的辦法)

回答

9

您的路由器在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 
相關問題