5

Tôi có một vấn đề lạ xảy ra với RC2.ASP.NET Core Identity 3 Cookie timeout

tôi đã thiết lập nhận dạng 3 ExpireTimeSpan đến 12 giờ sử dụng tùy chọn cấu hình sau

options.Cookies.ApplicationCookie.ExpireTimeSpan = new TimeSpan(12,0,0); 

Sau khi đăng nhập vào trang web và để lại nó ảnh hưởng cho ~ 35-40mins, tôi nhận được một lỗi 401 (đối với ajax của tôi đăng cuộc gọi) và làm mới trang web, tôi quay lại trang đăng nhập.

Tại sao tôi phải xác thực lại khi tôi đã thiết lập ExpireTimeSpan thành 12 giờ?

Có cài đặt hoặc cấu hình nào khác mà tôi cần không?

Đồng thời,

Làm cách nào để có thời gian còn lại trước khi hết hạn? Tôi muốn truy cập thông tin đó để tôi có thể cảnh báo người dùng rằng phiên của họ sẽ hết hạn sau thời gian X.

Cảm ơn!

Trả lời

5

Tôi đã tìm thấy sự cố

Vấn đề nằm ở cơ chế SecurityStamp. Theo mặc định, cứ 30 phút một lần, tem bảo mật được xác nhận. Điều này chủ yếu là do thực tế là đăng nhập ở khắp mọi nơi là một lựa chọn. Dấu bảo mật được cập nhật thường trong danh tính khi người dùng thay đổi mật khẩu chẳng hạn. Điều này sẽ làm cho tất cả các vị trí mà người dùng đã đăng nhập (ngoại trừ nơi mà anh ta đã thay đổi mật khẩu của mình) đăng xuất sau 30 phút vì dấu (thường là một guid) đã thay đổi.

Để thực hiện chức năng này, Thực hiện giao diện ISecurityStampStore<T> trong UserStore của bạn và thực hiện các GetSecurityStampAsync(User user, CancellationToken cancellationToken) phương pháp

Để biết thêm thông bạn có thể kiểm tra mã xác nhận tem an ninh và lý do tại sao nó đăng nhập bạn ra sau 30 phút

https://github.com/aspnet/Identity/blob/dev/src/Microsoft.AspNetCore.Identity/SecurityStampValidator.cs

Lưu ý: Tùy chọn.SecurityStampValidationInterval có thể được đặt để tăng kiểm tra thời gian nhưng không giải quyết được sự cố. Sau thời gian X, bạn sẽ vẫn bị đăng xuất.

+0

Vì vậy, không có thời gian hết hạn hoặc bất kỳ điều gì tương tự? Thật là tệ! Tôi nghĩ rằng đây là những gì tôi cần. Cookie của tôi hết thời gian chờ 30 phút, mặc dù phiên của tôi vẫn tiếp tục được xác thực ... – ganders

+0

Bạn có thể đăng mã của mình vì nó nằm trong dự án của bạn hay không. Tôi vẫn không thể làm cho tôi làm việc ngay cả khi kết hợp những thay đổi mà bạn đã đề cập. Tệp Startup.cs, v.v. – ganders

+0

Bạn có đang sử dụng DB làm phụ trợ không? Active Directory? Tất cả phụ thuộc vào sự tham gia của bạn! Nếu bạn có thể làm một người hay một điều gì đó mà chúng ta có thể thấy mã, nó sẽ rất hữu ích! – DOMZE

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