Trả lời

9

nhận dạng không có một cách tích hợp để theo dõi thông tin đăng nhập đồng thời, nhưng bạn có thể làm một công việc xung quanh: mỗi lần sử dụng đăng nhập, trước khi thiết lập auth-cookie, thay đổi của người dùng SecurityStamp bởi await userManager.UpdateSecurityStampAsync(user.Id);

Và hãy chắc chắn rằng bạn có phần này trong Startup.Auth.cs của bạn:

 app.UseCookieAuthentication(new CookieAuthenticationOptions 
     { 
      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(5), 
        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
      } 
     });    

Bằng cách này mỗi khi người dùng đăng nhập, tất cả các phiên khác sẽ không còn giá trị vì SecurityStamp về người dùng được thay đổi. Và validateInterval giá trị đủ thấp, vì vậy các cookie xác thực khác có thể bị vô hiệu hóa sớm.

+0

Tôi đang tìm cách tránh đăng nhập nếu tồn tại một phiên hoạt động cho người dùng đó. UserManager.GetSecurityStampAsync sẽ làm thủ thuật? –

+1

@ThiagoCustodio 'GetSecurityStampAsync' sẽ trả lại cho bạn chỉ một tem bảo mật là một GUID được lưu trữ trong hồ sơ của người dùng - tự nó không làm nhiều. Để tránh đăng nhập lần thứ hai, nó phức tạp hơn nhiều - bằng cách nào đó bạn sẽ cần phải theo dõi phiên hiện tại, giữ nguyên ID cho điều đó, đặt ID đó vào auth-cookie và kiểm tra đăng nhập nếu phiên hiện tại giống như đã được lưu trữ . Và tôi có thể thấy trước một đống vấn đề với cách tiếp cận này. Cuối cùng, nếu bạn muốn người dùng ngừng chia sẻ thông tin đăng nhập, phương pháp tiếp cận được đề xuất sẽ công nghệ cho họ ngay sau khi chia sẻ mật khẩu là xấu. – trailmax

+0

đang chờ userManager.UpdateSecurityStampAsync (user.Id), trong tệp nào trong MVC 5? – SAR

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