すべてのレールのリクエストに共通のユーザーIDのハッシュを処理するための最良の方法

StackOverflow https://stackoverflow.com/questions/386656

質問

各クライアントは、サーバーへのすべての要求と共に渡されたハッシュによって識別されます。この場合には、ユーザーセッションを追跡処理するための最良の方法は何でしょうか。

私はなど、ユーザーアカウントのrestful_authenticationを使用している要求の大きな割合は、ユーザーアカウントなしで発信することが期待ちょうどユニークなハッシュされます。

セッションを処理する方法の私の理解ではそう心の中でそれを負担してください限られています。 :)

役に立ちましたか?

解決

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を行います。

他のヒント

あなたがやろうとしているかに依存しますが、sessionハッシュは、あなたが望むものを提供することがあります。セッションストア自体のどこかに(暗号化されたCookie、データベース、またはサーバー上のファイルのいずれか)、およびクッキーに(あなたの「ハッシュ」と同様)、クライアントに一意の識別子を送信します。後続の要求では、クッキーが読み込まれ、対応するユーザのセッションデータはsessionハッシュに復元されます。

session[:user] = currently_logged_in_user.id
# ... next request ...
session[:user] # returns the currently logged in user's id
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top