【发布时间】:2010-05-25 02:37:53
【问题描述】:
在我的用户模型中,我有:
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
现在在我看来,我需要查看用户是否已登录:
<% if current_user %>
Sign Out
<% else %>
Sign In
<% end %>
在每个请求中,都会调用 current_user,这会导致对数据库进行 SELECT 调用以查找用户,然后进行 UPDATE 调用以更新 last_request_at 和 perishable_token,即使我设置 perishable_token_valid_for = 30.minutes。
有没有人有更好的方法来查看用户是否已登录,而不会在我的应用程序的每个页面上引起 SELECT 和 UPDATE。
有谁知道为什么即使我将易腐令牌设置为有效期为 30 分钟,它也会不断更新???
【问题讨论】:
标签: ruby-on-rails ruby authlogic