设计:某些iOS使用者在离开浏览器后不断登出

时间:2018-08-19 11:12:05

标签: ruby-on-rails devise

我运行了一个带有Turbolinks的非常简单的Rails 5.1应用程序,在这里我使用devise 4.4进行身份验证。我已经设置rememberable来进行设计,并且对我的大多数用户来说效果很好。但是,对于某些使用iOS的人(到目前为止,还不是全部),“记住我”功能不起作用。他们登录并正确选中“记住我”复选框后,只要离开浏览器(例如,切换到野生动物园以外的其他应用)几分钟,他们就会注销。

关键文件如下:

user.rb:

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
end

devise.rb:

Devise.setup do |config|
  config.mailer_sender = 'webmaster@example.com'
  require 'devise/orm/active_record'
  config.case_insensitive_keys = [:email]
  config.strip_whitespace_keys = [:email]
  config.skip_session_storage = [:http_auth]
  config.stretches = Rails.env.test? ? 1 : 11
  config.reconfirmable = true
  config.remember_for = 1.year
  config.expire_all_remember_me_on_sign_out = true
  config.extend_remember_period = true
  config.password_length = 6..128
  config.email_regexp = /\A[^@\s]+@[^@\s]+\z/
  config.timeout_in = 2.weeks
  config.reset_password_within = 6.hours
  config.sign_out_via = :get
end

sessions / new.slim:

h2
  | Log in
= simple_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f|
  .field
    = f.input :email, autofocus: true, type: "email"
  .field
    = f.input :password, autocomplete: "off", type: 'passsword'
  - if devise_mapping.rememberable?
    .field
      = f.input :remember_me, as: :boolean
  .actions
    = f.submit "Log in", class: 'btn btn-primary'
br
= render "devise/shared/links"

我不知道为什么会这样,是什么原因导致的,以及如何调试它?

1 个答案:

答案 0 :(得分:0)

好的,我想我已经找出了问题所在。我的一些iOS用户已在其主屏幕上为我的应用添加了书签。更具体地说,他们为登录屏幕添加了书签。因此,只要他们通过书签打开应用程序,它就会尝试对其进行授权,并最终将其注销。