各クライアントは、サーバーへのすべての要求とともに渡されるハッシュによって識別されます。この場合、ユーザー セッションの追跡を処理する最善の方法は何ですか?
ユーザーアカウントなどにrestful_authenticationを使用しています。リクエストの大部分は、ユーザーアカウントなしで一意のハッシュのみで発生すると予想されます。
セッションの処理方法についての私の理解は限られているため、そのことを心に留めておいてください。:)
各クライアントは、サーバーへのすべての要求とともに渡されるハッシュによって識別されます。この場合、ユーザー セッションの追跡を処理する最善の方法は何ですか?
ユーザーアカウントなどに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アクセスにログインが必要なコントローラーで a を実行します。
何をしようとしているのかにもよりますが、sessionハッシュはあなたが望むものを提供するかもしれません。セッションはどこかに (暗号化された Cookie、データベース、またはサーバー上のファイルのいずれか) に保存され、一意の識別子 (「ハッシュ」と同様) を Cookie でクライアントに送信します。session後続の要求では、Cookie が読み取られ、対応するユーザーのセッション データがハッシュに復元されます。
session[:user] = currently_logged_in_user.id
# ... next request ...
session[:user] # returns the currently logged in user's id