2009-06-23 9 views
1

にログインすることができないことを保証することはAuthlogicで簡単な方法があります(何もブラウジングthe docsを発見していない) にユーザーが既にUserSessionオブジェクトを持っている場合UserSessionが作成できないことを保証?Authlogic:ユーザーが二回

つまり、ユーザーが同じ資格情報で2回ログインできないようにします。

更新:この問題の解決策を見つけるために泥棒の回答に関するコメントを確認してください。お使いのユーザーセッションコントローラで

答えて

3

:アプリのコントローラで

before_filter :require_no_user, :only => [:new, :create] 

def require_no_user 
    if current_user 
    store_location 
    flash[:notice] = "You must be logged out to access this page" 
    redirect_to account_url 
    return false 
    end 
end 
+1

さらに、誰かがログインしているときに、ログインリンクも非表示にするのが最善の方法です。 –

+0

@thief:あなたは詳しく説明できますか? YがクライアントAのAliceとしてすでにログインしているときに、これがXをクライアントBのAliceとしてログインさせる方法を理解していません。 – Javier

+1

私はあなたの質問に誤解しました。この場合、コールバックが必要です。例えば、あなたのUserSessionModelで、コールバック 'before_persisting'を使用して、アカウントがAuthLogicメソッド 'logged_in?'を持つ別のマシンにログインしているかどうかを確認します。 - http://authlogic.rubyforge.org/classes/Authlogic/ActsAsAuthentic/LoggedInStatus/Methods/InstanceMethods.html :: – jcoffey

0

私の心にクリーンなアプローチがUserSessionクラスのコールバックを使用することです。同様に、before_createコールバックを定義し、適切な場合にモデルを無効とマークすることができます。しかし、自分でこれを試していない。ここにはthe docs for the Callbacks moduleがあります。

+0

はい、require_no_userメソッドは、ユーザーがログインしていない場所でも使用できますそれはその反対のものとよく対になる:require_user – jcoffey

+0

私は同意する。ここに追加するものはありません。 –