8

Ho utilizzato Identità ASP.NET 2.2.1. Di seguito è riportato il codice nel metodo post dell'azione VerifyCode.Cambia identità ASP.NET predefinita Riconoscimento a due fattori Tempo di scadenza cookie

var result = await SignInManager.TwoFactorSignInAsync(model.Provider, model.Code, isPersistent: model.RememberMe, rememberBrowser: model.RememberBrowser); 

switch (result) 
{ 
    case SignInStatus.Success: 
     return RedirectToAction("Dashboard","Index"); 
    case SignInStatus.LockedOut: 
     return View("Lockout"); 
    case SignInStatus.Failure: 
    default: 
     ModelState.AddModelError("", "Invalid code."); 
     return View(model); 
} 

Quando sia model.RememberMe e model.RememberBrowser è vero navigatore ricorda Identità e due fattori dei cookie per 2 settimane. Questa è l'implementazione predefinita.

Ma ho solo bisogno di ricordare TFA per 8 ore. Come lo posso fare?

Ho cercato la soluzione dagli ultimi 10 giorni ma non ho trovato la soluzione. Qualsiasi aiuto sarebbe molto apprezzato.

Di seguito è riportato il codice nella mia classe di avvio. Semplicemente non ha effetto.

public partial class Startup 
{ 
    // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864 
    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); 
     app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create); 

     string domainName = string.IsNullOrEmpty(Config.DomainName) ? "" : Config.DomainName; 
     string cookieName = "AspNet." + domainName; 

     // 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"), 
      SlidingExpiration = true, 
      ExpireTimeSpan = TimeSpan.FromHours(9), 
      CookieDomain = domainName, 
      CookieName = cookieName, 
      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, ProgenyUser, long>(
        validateInterval: TimeSpan.FromMinutes(30), 
        regenerateIdentityCallback: (manager, user) => user.GenerateUserIdentityAsync(manager), 
        getUserIdCallback: (id) => (id.GetUserId<long>())) 
      } 
     }); 



     // Use a cookie to temporarily store information about a user logging in with a third party login provider 
     //app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); 

     // 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); 


     // Uncomment the following lines to enable logging in with third party login providers 
     //app.UseMicrosoftAccountAuthentication(
     // clientId: "", 
     // clientSecret: ""); 

     //app.UseTwitterAuthentication(
     // consumerKey: "", 
     // consumerSecret: ""); 

     //app.UseFacebookAuthentication(
     // appId: "", 
     // appSecret: ""); 

     //app.UseGoogleAuthentication(); 
    } 
} 
+0

può essere configurato all'interno del ApplicationUserManager in App_Start \ IdentityConfig.cs – jp2code

+0

http://stackoverflow.com/q/28745143/153923 – jp2code

+1

@ jp2code Ho appena fatto un altro test e ho trovato quanto segue: Caso I, Controlla Ricordami durante la convalida del nome utente e della password. non controlli Ricordate del browser durante la verifica del codice Risultato: ExpireTimeSpan in Startup.Auth.cs ha effetto Caso II check Ricordati di me durante l'username e la password di convalida check Ricordati di me durante la verifica del codice Risultato: ExpireTimeSpan in avvio .Auth.cs non ha effetto. Entrambi i cookie ottengono un ExpireTime di 2 settimane. – nccsbim071

risposta

0

Questo sembra essere un bug che esamina il seguente problema di GitHub e altri thread su SO che gestiscono questo problema. https://github.com/aspnet/Identity/issues/309

Sembra che sia corretto nella versione beta di Identity corrente ma probabilmente non è una soluzione per voi. Vorrei andare per il lavoro proposto intorno al seguente SO question

Problemi correlati