每个客户端都由一个哈希标识,并与每个请求一起传递给服务器。在这种情况下,处理用户会话的最佳方法是什么?
我正在为用户帐户等使用restful_authentication。预计很大比例的请求会在没有用户帐户但只是唯一哈希的情况下发起。
我对处理会话的方式的理解有限,请记住这一点。 :)
答案 0 :(得分:2)
在URL中使用此哈希意味着您没有Rails内置会话。会话的目的是在请求之间提供一些状态感。你已经提供了这个状态,看到你传递了这个哈希,所以在我看来你可以删除restful_authentication插件并做这样的事情:
class ApplicationController < ActionController::Base
def require_login
if params[:access_key]
@current_user = User.find_by_access_key(params[:access_key]) || restrict_access
else
restrict_access
end
end
def restrict_access
flash[:error] = "You have to log in to access that."
redirect_to root_path
end
end
然后,在需要登录的控制器中执行before_filter :require_login
。
答案 1 :(得分:1)
取决于您尝试执行的操作,但session
哈希可能会提供您想要的内容。会话将自己存储在某处(加密的cookie,数据库或服务器上的文件),并在cookie中向客户端发送唯一标识符(类似于“哈希”)。在后续请求中,将读取cookie并将相应用户的会话数据恢复为session
哈希值。
session[:user] = currently_logged_in_user.id
# ... next request ...
session[:user] # returns the currently logged in user's id