2016-09-22 8 views
4

なぜこの動作が表示されているのか明確な答えを見つけようとしています。私はMicrosoft ASP.NET Identityテンプレートプロジェクトを使用して、Identity、OWINなどの仕組みを見ています。私はリクエストするたびにそれに気づいています(連絡先、管理などに行く)。私のAspNet.ApplicationCookieは暗号化された別の文字列を持っています(ChromeやIEで開発ツールを使用している場合)。最初は私はユーザーの主張をしなかったのかもしれないと思っていましたが、いくつかの主張を追加しようとしたが、同じ動作を見ました。誰か見た/知っている理由はありますか? OWINミドルウェアがどのようにクッキーを暗号化するかによって、暗号化されたクッキーが変更されるだけですか?どんな助けでも大歓迎です。ASP.Net Identity ASPNET.ApplicationCookieが検査時に違って見える

私はhttps://brockallen.com/2013/10/24/a-primer-on-owin-cookie-authentication-middleware-for-the-asp-net-developer/
http://tech.trailmax.info/2014/08/aspnet-identity-cookie-format/

を読みますが、どちらも本当に正確な理由私が見ている動作が表示される場合がありますし得ません。みんなありがとう。 UPDATE

: はここに私のstartup.Auth.csだ

public void ConfigureAuth(IAppBuilder app) 
    { 

     // Configure the db context, user manager and signin manager to use a single instance per request 
     app.CreatePerOwinContext(ApplicationDbContext.Create); 
     app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create); 
     app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create); 

     // Enable the application to use a cookie to store information for the signed in user 
     // and to use a cookie to temporarily store information about a user logging in with a third party login provider 
     // Configure the sign in cookie 
     app.UseCookieAuthentication(new CookieAuthenticationOptions 
     { 

      AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
      LoginPath = new PathString("/Account/Login"), 
      LogoutPath = new PathString("/Account/LogOff"), 
      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.FromMinutes(0), 
        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
      }, 
     });    
     //app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); 

     // these two lines of code are needed if you are using any of the external authentication middleware 
     app.Properties["Microsoft.Owin.Security.Constants.DefaultSignInAsAuthenticationType"] = "ExternalCookie"; 
     app.UseCookieAuthentication(new CookieAuthenticationOptions 
     { 
      AuthenticationType = "ExternalCookie", 
      AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Passive, 
     }); 

     // Enables the application to temporarily store user information when they are verifying the second factor in the two-factor authentication process. 
     app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5)); 

     // Enables the application to remember the second login verification factor such as phone or email. 
     // Once you check this option, your second step of verification during the login process will be remembered on the device where you logged in from. 
     // This is similar to the RememberMe option when you log in. 
     app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie); 
} 
+0

があなたの 'Startup.Auth.cs'ファイルを表示する回答かもしれない そこにいる。 – trailmax

+0

確かに、私は自分の投稿を更新しました。再度、感謝します! –

答えて

2

あなたの問題は、あなたが効果的にすべてのrequest`にクッキーを再生成する」と言う。ここvalidateInterval: TimeSpan.FromMinutes(0),に沿ったものである - セキュリティスタンプがあるときに、これは世界的なクッキーの無効化のためであります。変更

はカップル分とvalidateIntervalを設定してください - 。。あなたは、あなたはそれがために設定ごとにしかしかし分を要求ごとに無効にクッキーを取得することはありません

+0

ああ、私は参照してください。私はそれをゼロに設定するので、ユーザーがパスワードをリセットすると、他のすべてのセッションはすぐに追い出されます。私は1に設定し、あなたが説明した動作を見ました。ご協力ありがとうございました。それは有り難いです。 –

+1

@AurelioRamaまた、妥当性検査の間隔をゼロにすることは、すべてのリクエストで 'select 'を使ってデータベースにヒットすることを意味します - ある時点でこれはパフォーマンスの問題を引き起こします。 – trailmax

+0

それは大きなポイントです。今私はASP.Net Identityを使用するために私たちの古い認証を移行するための概念証明をしています。間違いなくそれを考慮する必要があります。ヘッドアップをありがとう! –

関連する問題