1

每个客户端都由一个哈希标识,与每个请求一起传递给服务器。在这种情况下,处理跟踪用户会话的最佳方法是什么?

我正在对用户帐户等使用restful_authentication。预计很大一部分请求将在没有用户帐户的情况下发起,而只是唯一的哈希。

我对处理会话方式的理解有限,因此请记住这一点。:)

4

2 回答 2

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在需要登录才能访问的控制器中执行操作。

于 2008-12-25T10:08:07.173 回答
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
于 2008-12-22T20:10:15.820 回答