2017-02-17 1 views
1

.NETのID OnValidateIdentityメソッドがどのように正確に機能するかを理解しようとしています。私は、次のように自分のアプリケーションのコードのこの部分を設定している:OnValidateIdentity ASP.NET IDの動作方法

app.UseCookieAuthentication(new CookieAuthenticationOptions 
    { 
     AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
     LoginPath = new PathString("/Account/Login"), 
     CookieName = "LoginCookie", 
     ExpireTimeSpan = TimeSpan.FromHours(1), 
     Provider = new CookieAuthenticationProvider 
     { 
      // Enables the application to validate the security stamp when the user logs in. 
      // This is a security feature which is used when you change a password or add an external login to your account. 
      OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
       validateInterval: TimeSpan.FromHours(1), 
       regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
     } 
    }); 

はここOnValidateIdentityないユーザーが古いが、彼のクッキーであるかを確認するために私のウェブサイトにアクセスしたときにチェックする役割を持っており、それはそれよりも古いかどう私はここ(1時間です)に設定しました - ユーザーはアプリケーションにリロッグする必要があります。

これは正確に動作しますか?

答えて

3

あなたは完全に理解するためにsource codeを読んでみませんか?

つまり、このメソッドは、ユーザーレコードのSecurityStampの値が変更されたかどうかをチェックします。毎時間(あなたの設定で)チェックします。したがって、SecurityStampが変更された場合、Cookieは無効になります。 SecurityStampが最後にチェックされたときから変更されていない場合、Cookieの値は(新しいタイムスタンプで)更新されますが、ユーザーはログアウトされません。

この機能は、ユーザーがパスワードを変更し、すべてのブラウザで既存のすべての認証Cookieを無効にしたい場合に便利です。

さらに詳しくはblog postです。

関連する問題