2013-11-27 18 views
5

私はASP.NET MVC 4の標準メンバーシップ機能を使用しています。ASP.NET MVC 4メンバーシップ "Remember me"はどのように機能しますか?

ユーザーが正常にログインすると、データベースからいくつかのユーザー情報が取得され、アプリケーションの特定の部分で使用します。

私の問題は以下の通りです:

、私は「私を忘れないでください」オプションを有効にすると、それが正常に動作しますが、これは実際には、ログイン検証プロセスの間に読み込まれているため、セッション変数がロードされることはありませんではないだろう現在はスキップされています。

私の質問は、私が必要とするセッション変数をロードするカスタムコードを入れるための "Remember me"検証プロセスをキャッチする方法はありますか?

(または多分私は後で使用することができますクッキーを「私を覚えている」?に多くの情報を追加する)あなたのシナリオでは、あなたに

+0

私が間違っているから訂正してください。あなたがしていることは、ログインして情報を含むオブジェクトを戻してセッションに入れるときです。認証クッキーを作成したら、有効期限を設定して応答に入れます。また、web.configのフォームのauth要素にタイムアウトを設定します(5日間としましょう)。これで、認証Cookieを送信することでauthをバイパスできます。それが本当であれば、あなたのオブジェクトはまだセッションに保存されるべきだと思いますか?あなたはオブジェクトが必要ですか、私を覚えていても新しいオブジェクトが必要ですか? – Anton

答えて

5

をありがとう、あなたは、ユーザーの情報を埋めるためにのGlobal.asaxのSESSION_STARTイベントを使用することができます。

public class Global : System.Web.HttpApplication 
{ 
    protected void Session_Start(object sender, EventArgs e) 
    { 
     if (HttpContext.Current.User != null && 
      HttpContext.Current.User.Identity.IsAuthenticated && 
      HttpContext.Current.Session["MyUserInfo"] == null) 
     { 
      // Get the user's information from database and save it to Session. 
      HttpContext.Current.Session["MyUserInfo"] = "johndoe"; 
     } 
    } 
} 
関連する問題