Обновление пароля дает ошибку массового назначения с расширением безопасности Devise

Мы пытаемся использовать гем Devise Security Extension для использования функции :password_archivable, чтобы пользователи не могли повторно использовать старые пароли. . Всякий раз, когда мы пытаемся изменить пароль пользователя на веб-сайте, мы получаем ошибку массового назначения.

Часть нашей модели:

class User < Person
  rolify
  devise :database_authenticatable, #...
         :password_archivable
 #attr_accessible :encrypted_password, :password_salt
  ...
end

Часть нашего контроллера:

class HealthPromotersController < ApplicationController
  load_and_authorize_resource

  ...
  def update
    ...
    respond_to do |format|
      if @health_promoter.update_attributes(params[:health_promoter])
        sign_in(@health_promoter, :bypass => true) if @current_user.id == @health_promoter.id

        format.html { redirect_to @health_promoter, notice: 'Health Promoter was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @health_promoter.errors, status: :unprocessable_entity }
      end
    end
  end

Когда мы переходим на страницу редактирования health_promoter и вводим пароль и подтверждение_пароля, Devise Security Extension завершается с ошибкой массового назначения для зашифрованного_пароля и пароля_соли, когда password_archivable.rb пытается установить:

 OldPassword.new(old_password_params)

ActiveModel::MassAssignmentSecurity::Error at /health_promoters/1 Can't mass-assign protected attributes: encrypted_password, password_salt

Мы пытались добавить :encrypted_password и :password_salt в список attr_accessible, но безрезультатно. В документации Devise (github.com/plataformatec/devise/blob/3d9dea39b2978e3168604ccda956fb6ec17c5e27/lib/devise/models/authenticable.rb) сказано, что мы можем использовать :force_except или :except, но неясно, как и где это должно быть указано.

Мы используем следующие версии: Ruby 2.0.0p451, Rails 3.2.19, Devise 3.2.4, Devise Security Extension 0.8.0.

Любая помощь будет принята с благодарностью.


person acubed    schedule 05.08.2014    source источник
comment
Вы читали это? Не уверен, что это одно и то же. stackoverflow.com/questions/14334036/   -  person Beartech    schedule 05.08.2014


Ответы (1)


Понизьте расширение безопасности устройства до версии 0.7.2 для быстрого исправления, поскольку оно работает.

person user4169700    schedule 22.10.2014