【发布时间】:2023-04-11 10:51:02
【问题描述】:
我创建了我的第一个 Elixir/Phoenix 应用,我想记录访问者的 IP 地址。
在我的 router.ex 中,我正在“记录”实际存在的页面的 IP 地址。
def log_ip(conn, _) do
conn.remote_ip
|> Tuple.to_list
|> Enum.join(".")
|> IO.puts
conn
end
...
defmodule Mysite.Router do
use Mysite.Web, :router
pipeline :browser do
plug :log_ip
...
scope "/", Mysite do
pipe_through :browser
这一切正常,但我在终端中看到有一些机器人试图访问不存在的页面,例如“/admin.php”、“/command.php”。我想记录这些 ip 地址,但上面的代码不起作用。
可能不相关,但我也有这段代码来处理点击不存在链接的人(例如 /blog/non-existent-page)
defimpl Plug.Exception, for: Phoenix.Template.UndefinedError do
def status(_exception), do: 404
end
有没有办法在我返回 404 之前访问 conn 并记录 remote_ip(或更好的方法来处理所有这些)?
【问题讨论】: