Rails 5 地理定位许可

Rails 5 Geolocation with Clearance

我目前正在使用 Clearance 进行身份验证。作为登录过程的一部分,我想确保我有一个用户位置(存储在会话中)。

我的问题是如何在清关的情况下做到这一点?理想情况下,我只想在登录时执行查找(以节省网络流量/API 调用)。如果找不到用户,我将拒绝登录。

我正在考虑使用 guard,但我似乎无法访问 request.ipsession,这有点妨碍交易。我还试图避免重定向到只进行地理定位然后再次重定向的 URL。

有人对如何使这项工作有好的模型有想法吗?谢谢!

登录守卫主要用于阻止或允许登录的进程。我认为它们不适合这里。对于这个用例,我建议覆盖 sign_in,它通常混入 ApplicationController

def sign_in(user, &block)
  super

  if signed_in?
    UserGeocoder.call(current_user)
  end
end