2016-07-26 98 views
0

當我通過活動管理員忘記passoword生成重置密碼鏈接時,我可以更改密碼並登錄到儀表板,但是當我嘗試使用同樣的鏈接再次更改密碼它什麼也不做,並重定向到同一頁面。即使輸入空密碼,它也不會顯示錯誤。我希望它顯示令牌已過期的錯誤活動管理員:在令牌過期後重置密碼不顯示錯誤

每次提交表單時都會生成相同的日誌。

ADMINUSER負荷(0.6ms)SELECT 「admin_users」。* FROM 「admin_users」 WHERE 「admin_users」。 「reset_password_token」= '14ad4bc9d075cbb5ed8057c9518848e448e56beab6430ff1d3c7459771a79662' ORDER BY 「admin_users」。 「ID」 ASC LIMIT 1 [[「reset_password_token 「=」14ad4bc9d075cbb5ed8057c9518848e448e56beab6430ff1d3c7459771a79662「]] method = PUT path =/admin/password format = html controller = ActiveAdmin :: Devise :: PasswordsController action = update status = 200 duration = 606.45 view = 570.88 db = 0.64 time = 2016-07- 26 12:25:20 UTC category = web ip = 127.0.0.1 params = {「admin_user」=> {「password」=>「[FILTERED]」,「password_confirmation」=>「[FILTERED]」,「reset_password_token」= >「[FILTERED]」},「commit」=>「更改我的密碼」}

我不知道爲什麼我給200個狀態。任何想法我應該開始尋找?

回答

0

Devise::PasswordsController overrided的色器件update方法和添加一行來顯示錯誤flash[:error] = resource.errors.full_messages.to_sentence 基本上它不顯示錯誤回報如果resource.errors.empty?是假的。

這裏是更新的方法

# PUT /resource/password 
    def update 
    self.resource = resource_class.reset_password_by_token(resource_params) 
    yield resource if block_given? 

    if resource.errors.empty? 
     resource.unlock_access! if unlockable?(resource) 
     if Devise.sign_in_after_reset_password 
     flash_message = resource.active_for_authentication? ? :updated : :updated_not_active 
     set_flash_message(:notice, flash_message) if is_flashing_format? 
     sign_in(resource_name, resource) 
     else 
     set_flash_message(:notice, :updated_not_active) if is_flashing_format? 
     end 
     respond_with resource, location: after_resetting_password_path_for(resource) 
    else 
     flash[:error] = resource.errors.full_messages.to_sentence 
     set_minimum_password_length 
     respond_with resource 
    end 
    end