AuthLogic perishable_token会在每个请求中重置

在我的用户模型中,我有:

acts_as_authentic do |c| c.perishable_token_valid_for = 30.minutes end 

在我的应用程序控制器中,我有标准的样板代码:

 def current_user_session return @current_user_session if defined?(@current_user_session) @current_user_session = UserSession.find end def current_user return @current_user if defined?(@current_user) @current_user = current_user_session && current_user_session.record end 

现在在我看来,我需要查看用户是否已登录:

  Sign Out  Sign In  

在每个请求中,都会调用current_user,这会导致对数据库进行SELECT调用以查找用户,然后更新last_request_at和perishable_token的UPDATE调用,即使我设置了perishable_token_valid_for = 30.minutes。

  1. 有没有人有更好的方法来查看用户是否登录而不会在我的应用程序的每个页面上导致SELECT和UPDATE。

  2. 有没有人知道为什么易腐物品不断更新,即使我将它设置为30分钟有效?

perishable_token_valid_for没有做你想象的那样。 它旨在与find_using_perishable_token协同工作,该帐户用于帐户validation和重置忘记的密码。 默认超时为10分钟。

该令牌应该像它正在做的那样在每个请求上更新。 如果您不想要,可以删除该列。 authlogic完全可选。

如果你真的想保留易腐坏的令牌但是手动更新它,你可以做disable_perishable_token_maintenance = true