创建新记录时是否可以获取用户的Mac地址?

cat*_*cat 3 ruby-on-rails ruby-on-rails-3

是否可以获取发布新记录的用户的MAC地址?
如果我调用了列mac_address,如何编写控制器以将MAC地址放入该列?

the*_*eIV 6

用户的mac地址不是Web请求的一部分.

我知道这不是你的问题,但你可以使用请求对象获取他们的IP地址:

request.ip
Run Code Online (Sandbox Code Playgroud)

在您的create操作中,您可以使用以下内容(假设您有一个列ip_address):

def create
  @item = Item.new(params[:item])
  @item.ip_address = request.ip
  if @item.save
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)


j_m*_*lly 6

您可以接听request.ip并拨打ping.这应该将ip放入你机器的arp缓存中.通过转储arp缓存,您可以匹配MAC地址.

`ping -c 1 #{request.ip}`
sleep(10) # For dramatic effect
arptable = `arp -a`
entries = arptable.split("\n")
ipmap = {}
entries.each do |e|
  ent = e.split(" ")
  ipmap["#{ent[1].gsub(/\(|\)/, "")}"] = ent[3]
end
puts ipmap["#{request.ip}"]
Run Code Online (Sandbox Code Playgroud)

此代码在osx mavericks上进行测试,工具和格式可能在linux/bsd/solaris上有所不同,但应该是相同的方法,另一个警告是它只能在您的本地Intranet /网段上工作.

更新

检查亚马逊linux和格式似乎相同.