小编ntf*_*tfx的帖子

根据用户代理和/或 ip 更改重置会话。带设计的导轨

我想在用户代理和/或用户 ip 更改时重置会话。项目使用 Rails 和 Devise 进行身份验证,使用 CanCanCan 进行授权。

我的做法是:

class ApplicationController < ActionController::Base

  before_action :authorize_ip

  def authorize_ip
    if warden.authenticated?
      warden.session['ip'] ||= request.ip
      warden.session['user_agent'] ||= request.user_agent
      warden.logout if warden.session['ip'] != 'request.ip' &&
        warden.session['user_agent'] != request.user_agent
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

根据我的理解,它应该设置warden.session['ip']和 user_agent 一次,然后在request['ip']user_agent 更改时跟踪请求,会话应该被删除并且用户应该被注销。但是,在使用不同浏览器进行测试时,warden.session['user_agent'] 会根据我使用的浏览器进行更改。我想我误解了一些东西。另外,如果有更好的方法来解决这个问题,请分享。

谢谢!

ruby ruby-on-rails devise warden

2
推荐指数
1
解决办法
1051
查看次数

标签 统计

devise ×1

ruby ×1

ruby-on-rails ×1

warden ×1