Tôi có xác thực Mẫu và tôi cần một đối tượng tùy chỉnh được lưu trữ trong HttpContext.Current.User và trong Thread.CurrentPrincipal.PostAuthenticateRequest cháy nhiều lần
Để có được điều này, tôi lắng nghe sự kiện PostAuthenticateRequest, sau đó đọc từ DB tất cả dữ liệu người dùng tôi cần được lưu trữ trong HttpContext.Current.User và trong Thread.CurrentPrincipal, sau đó tôi nhanh chóng tùy chỉnh đối tượng IPrincipal và IIdentity và gán chúng đến các địa điểm trên.
Vấn đề là vì một lý do PostAuthenticateRequest bắn nhiều lần cho một yêu cầu duy nhất .. Điều này gây ra không cần thiết DB roundtrips rằng hiệu suất tổn thương ..
Làm thế nào tôi nên giải quyết này? (ASP.NET MVC 2)
Cảm ơn.
Ồ, vâng! Điều với các nguồn lực và vv trượt tâm trí của tôi !!! Cảm ơn bạn đã bồi dưỡng! Tôi đã xem xét bộ nhớ đệm. Nhưng nó cũng đi với hàm ý. Ví dụ, tôi đọc từ DB và lưu trữ trong quyền của người dùng chính. Có chúng trong bộ nhớ cache không phải là ý tưởng rất tốt trong trường hợp Admin quyết định thay đổi quyền cho người dùng - quyền người dùng được lưu trong bộ nhớ cache sẽ không được cập nhật cho đến khi người dùng đăng xuất/đăng nhập .. Cần thử ý tưởng của bạn bằng bộ nhớ đệm "ngắn gọn". Có vẻ như nó phải phù hợp với hóa đơn .. Cảm ơn rất nhiều! – Ant
Bạn có thể cập nhật bộ nhớ cache cho người dùng hiện tại trên Page_Init. Sau đó, nó sẽ được tải lại từ DB chỉ một lần cho mỗi yêu cầu trang. Điều này sẽ luôn xảy ra trước khi bất kỳ yêu cầu nào khác được yêu cầu vì trang chưa được hiển thị. –