处理所有rails请求共有的用户id哈希的最佳方法

时间:2008-12-22 16:23:15

标签: ruby-on-rails ruby web-services request

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

我正在为用户帐户等使用restful_authentication。预计很大比例的请求会在没有用户帐户但只是唯一哈希的情况下发起。

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

2 个答案:

答案 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