18

そのセッションが属するsession["session_id"]ログインを見つけることは可能ですか?User

4

2 に答える 2

25

少なくとも私のシステム (rails 3.2、devise 2.0.4) では、次のようにできます。

sessionは:

{"session_id"=>"be02f27d504672bab3408a0ccf5c1db5", "_csrf_token"=>"DKaCNX3/DMloaCHbVSNq33NJjYIg51X0z/p2T1VRzfY=", "warden.user.user.key"=>["User", [3], "$2a$10$5HFWNuz5p6fT3Z4ZvJfQq."]}

session["warden.user.user.key"][1][0]、それからです3

だから、私はそれを次のように見つけるでしょう:

User.find(session["warden.user.user.key"][1][0])
于 2012-04-26T18:01:30.360 に答える
4

あなたが何を達成しようとしているのかわかりませんが、答えようとします

現在のセッションのユーザーのみが必要な場合、簡単な方法は、セッションにユーザーのIDを保存することです。次に例を示します。

def login(username, pass)
  # do the usual authentication stuff and get user
  if logedin
    session[:user_id] = user.id
  end
end 

次に、現在のユーザーを取得します。

current_user =User.find(session[:user_id])

現在ログインしているすべてのユーザーを検索する場合は、セッションデータがブラウザーのCookieに保存されることが事前定義されているため、DBでセッションを保存するようにアプリを構成する必要があると思います。この回答の詳細については、この回答を確認してください Railsでオンラインユーザーを追跡する方法は?


編集:あなたがデバイスを使用していることに気づいたので、最初の方法が実際にあなたのためにあります。current_user任意のコントローラーでメソッドを呼び出す必要があります。2番目の方法については、DeviseinRailsを使用してこの回答「Who'sOnline」を確認してください

于 2012-04-26T18:39:28.413 に答える