我解决了这个问题,但在我看来它有点难看。这就是我所做的。
在 cookie 身份验证方法中,我设置了一个会话变量,指示使用了 cookie 登录方法。
def login_from_cookie
user = cookies[:auth_token] && User.find_by_remember_token(cookies[:auth_token])
if user && user.remember_token?
session[:cookie_login] = true **# this is my addition**
self.current_user = user
handle_remember_cookie! false # freshen cookie token (keeping date)
self.current_user
end
end
然后在 :before_filter set_current_user
我只是检查该变量并重定向是否已设置确保将变量设置为 nil。
def set_current_user
Authorization.current_user = current_user
if session[:cookie_login]
redirect_to :controller => :users, :action => :search
session[:cookie_login] = false
end
end
它不漂亮,但它确实有效。我绝对愿意接受有关如何清理它的任何建议。