すべてのレールのリクエストに共通のユーザーIDのハッシュを処理するための最良の方法
-
23-08-2019 - |
質問
各クライアントは、サーバーへのすべての要求と共に渡されたハッシュによって識別されます。この場合には、ユーザーセッションを追跡処理するための最良の方法は何でしょうか。
私はなど、ユーザーアカウントの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
所属していません StackOverflow