在Rails 3应用程序中使用devise_security_extension

时间:2018-10-22 22:31:32

标签: ruby-on-rails devise

我正尝试在现有的Rails 3应用程序中使用devise_security_extension,因此我可以控制以下内容:

  • 确保密码长度在8到70个字符之间,并且至少具有一个小写字符,一个大写字符,一个数字和一个特殊字符。

  • 旧密码已存档,最多6个

  • 不能使用未存档的旧密码

  • 密码在3个月后过期

  • 超过3个月未使用的帐户已过期

  • 会话在闲置15分钟后到期

我在Gemfile中添加了以下内容:

gem 'devise_security_extension', '0.10.0'

在我的config / initializers / devise.rb文件中,添加了以下内容:

config.expire_password_after = 3.months
config.password_regex= /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,70}$/
config.password_archiving_count = 6
config.deny_old_passwords = true
config.expire_after = 3.months
config.timeout_in = 15.minutes
config.expire_auth_token_on_timeout = true

在我的模型/user.rb中,我具有以下内容:

devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable, :invitable,
     :confirmable, :password_expirable, :secure_validatable, :password_archivable,
     :session_limitable, :expirable

然后我执行以下操作:

bundle install
rails generate devise_security_extension:install

但是,我注意到没有产生迁移文件。我在这里错过任何步骤了吗?

1 个答案:

答案 0 :(得分:1)

rails generate devise_security_extension:install

不创建迁移,它所做的是向config/initializers/devise.rb

添加可选配置

对于password_expirable和password_archivable,您应该创建一些迁移:用于存储密码更改日期的字段...

rails g migration AddPasswordChangedAtToUser password_changed_at:datetime:index

...和一个用于跟踪旧密码的表

create_table :old_passwords do |t|
  t.string :encrypted_password, :null => false
  t.string :password_archivable_type, :null => false
  t.integer :password_archivable_id, :null => false
  t.datetime :created_at
end
add_index :old_passwords, [:password_archivable_type, :password_archivable_id], :name => :index_password_archivable

关于gem的所有解释都在github自述文件中进行了解释...

https://github.com/phatworx/devise_security_extension