8

Tôi đã sử dụng ASP.NET Identity 2.2.1. Sau đây là mã trong phương thức post của hành động VerifyCode.Thay đổi mặc định ASP.NET Identity Hai yếu tố nhớ Cookie hết hạn Thời gian

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

Khi cả hai model.RememberMe và model.RememberBrowser là trình duyệt đúng sẽ nhận dạng và hai yếu tố cookie trong 2 tuần. Đây là cài đặt mặc định.

Nhưng tôi chỉ cần nhớ TFA trong 8 giờ. Làm thế nào tôi có thể làm điều đó?

Tôi đã tìm kiếm giải pháp từ 10 ngày qua nhưng tôi chưa tìm thấy giải pháp. Bất kì sự trợ giúp nào đều được đánh giá cao.

Sau đây là mã trong lớp StartUp của tôi. Nó không có hiệu lực.

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

thể được cấu hình bên trong ApplicationUserManager trong App_Start \ IdentityConfig.cs – jp2code

+0

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

+1

@ jp2code Tôi chỉ cần thực hiện thử nghiệm khác và tôi được tìm thấy sau đây: Trường hợp I, Kiểm tra Nhớ thông tin đăng nhập của tôi trong quá trình xác thực tên người dùng và mật khẩu. không kiểm tra Ghi duyệt trong mã xác minh Kết quả: ExpireTimeSpan trong Startup.Auth.cs có hiệu lực thi Trường hợp II Kiểm tra Remember me trong tên truy cập và mật khẩu xác nhận Kiểm tra Ghi tôi trong việc xác minh maõ Kết quả: ExpireTimeSpan trong Startup .Auth.cs không có hiệu lực. Cả hai cookie đều nhận được ExpireTime trong 2 tuần. – nccsbim071

Trả lời

0

Điều này có vẻ là một lỗi khi xem vấn đề GitHub và các chủ đề khác trên SO xử lý vấn đề này. https://github.com/aspnet/Identity/issues/309

Có vẻ như đã được sửa trong phiên bản beta Identity hiện tại nhưng có lẽ đó không phải là giải pháp cho bạn. Tôi sẽ đi cho công tác đề nghị xung quanh tại sau SO question

Các vấn đề liên quan