2012-04-20 14 views
14

deviseを使用して認証するレール3アプリがあり、ユーザーがログインしているかどうかを確認するにはjavascriptを使用したいと思います。javascriptを使用してdeviseでログインしているか確認する

+0

ください。詳細を追加してより良いアドバイスを得る – ControlAltDel

+0

さらに詳しい情報は必要でしょうか?私は私のアプリで認証のためにdeviseを使用し、ユーザーがjavascriptを使って認証されているかどうかを確認する方法を知りたいですか? – Solomon

+0

@Solomon:Railsの仕組みは分かりませんが、クッキー(PHP)や非表示の入力(ASP.NET)をチェックしてセッションIDを確認できます。 –

答えて

15

工夫がウォーデンに基づいているので、あなたが(サーバーのみセッションクッキーとは異なり)JSから見ることができます追加のクッキーを設定するワーデンコールバックを使用することができるが、例えば:

Warden::Manager.after_set_user do |user,auth,opts| 
    auth.cookies[:signed_in] = 1 
    end 

    Warden::Manager.before_logout do |user,auth,opts| 
    auth.cookies.delete :signed_in 
    end 
+1

Rails 4で動作しますか? – SsouLlesS

+1

@SsouLlesSほぼ。 (何らかの理由で 'cookies.delete'がブラウザからクッキーを削除していなかったので、私は' value'として '0'を、ログアウト時に' Time.now'に 'expire'を割り当てました。 –

-2

cookiesのクライアントにRailsストアセッションがあるようです。

ログインしているときにアプリケーションのCookieをチェックし、ログアウトしたときにそこにあるものがではないことを確認します。

このようにして、クライアントに接続しているかどうかを簡単に確認できます。あなたのdevise.rbで

+0

これはdocument.cookieをチェックすると、ログインしている、またはログアウトしている場合には違いがあります:__utma = 111872281.2045911381.1309470856.1334590129.1334935149.157; __utmz = 111872281.1309470856.1.1.utmcsr =(直接)| utmccn =(直接)| utmcmd =(なし); __utmc = 111872281 – Solomon

+1

devise cookieはHttpOnlyなので、javascriptから読むことはできません。これが機能するには、自分のクッキーを設定する必要があると思います。 – Steve

関連する問題