2010-09-14 4 views
2

Я использую малую маркерную магию в authlogic для сброса пароля. Однако кажется, что токен сбрасывается, когда пользователь пытается войти в систему и не работает. Это связано с тем, что authlogic увеличивает количество неудачных попыток входа в пользовательскую запись. Поэтому, если пользователь запрашивает новый пароль, а затем пытается войти в систему до сброса пароля, изменяется скоропортящийся токен.Authlogic Скоропортящийся токен Сброс при неудачном входе

Любые идеи, чтобы обойти это?

ответ

2

Итак, мы в конце концов выяснили путь вокруг этого.

Первый ход был отключить автоматическую скоропортящийся обработку маркера:

############# 
## Authlogic 
acts_as_authentic do |c| 
    ..... 
    c.disable_perishable_token_maintenance = true 
    ..... 
end 

Затем мы создали нашу собственную before_filter на пользователя, чтобы имитировать ту же функциональность, что и автоматический обработчик, но игнорировать изменения в failed_login_count поле:

before_save :handle_perishable_token 

def handle_perishable_token 
    unless failed_login_count_changed? 
    reset_perishable_token 
    end 
end 

Это в основном позволяет пользователю выйти из строя при входе в систему, а не сбросить скоропортящийся токен.

2

У меня была аналогичная проблема, и мне нравится ваше решение, но, на мой взгляд, это хорошо, чтобы добавить:

before_save :handle_perishable_token 

def handle_perishable_token 
    unless failed_login_count_changed? && changed.size == 1 
    reset_perishable_token 
    end 
end 

, потому что при сбросе пароля, между другими атрибутами, failed_login_count также изменяется (устанавливается в 0), и в этом случае perishable_token следует сбросить.

Смежные вопросы