在浏览器关闭杀死设计会话

时间:2016-02-19 09:07:36

标签: session ruby-on-rails-4 devise

我之前知道有关于我的主题的问题,我已阅读但没有帮助。

我已将以下代码放在config/initializers/devise.rb

config.skip_session_storage = [:disabled]

因此正常登录并且会话一直保持到浏览器打开,当浏览器关闭时会话被杀死。它要求在新的浏览器窗口中进行新的登录。

我想知道发生了什么事,保持skip_session_storage被禁用会有任何问题。将来我会使用支付网关,它会影响它吗?

1 个答案:

答案 0 :(得分:0)

我面对同样的问题。要在浏览器关闭后让用户登录,您需要执行以下操作。包含在您的模型中:可记住(默认情况下应包括)

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable
end

你的会话控制器应该是

class SessionsController < Devise::SessionsController
 include Devise::Controllers::Rememberable

 def create
  self.resource = warden.authenticate!(auth_options)
  set_flash_message(:notice, :signed_in) if is_flashing_format?
  sign_in(resource_name, resource)
  #add remember me to remember user
  remember_me resource
  respond_with resource, location: after_sign_in_path_for(resource)
 end
end

你可以看到那种方法记得我基本上做的工作。这里指向有关此https://github.com/plataformatec/devise/wiki/Omniauthable,-sign-out-action-and-rememberable

的官方文档

这些东西是如何运作的?基本上,当您在用户端调用remember_me设置cookie时,您应该在Chrome / Firefox / Safari检查器中看到类似remember_user_token(我假设您的身份验证模型是用户)的内容。然后一切都应该有效希望它有所帮助

相关问题