我正尝试在现有的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
但是,我注意到没有产生迁移文件。我在这里错过任何步骤了吗?
答案 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自述文件中进行了解释...