Tôi bị nhầm lẫn về bộ nhớ đệm và ủy quyền ASP.NET MVC và nhu cầu rõ ràng về một số làm rõ.Ủy quyền và ASP.NET MVC Caching
Thuộc tính ủy quyền tự tạo của tôi kế thừa từ AuthorizeAttribute
. Phương thức AuthorizeCore
được ghi đè của nó chạy mọi lúc, ngay cả khi tôi đặt thuộc tính [OutputCache]
trên hành động của bộ điều khiển. Tôi hiểu phần đó.
Bây giờ, tâm trí sẽ biến đổi đối với tôi: AuthorizeCore
sẽ không mỗi lần bây giờ khi tôi thực sự tạo bộ nhớ đệm đầu ra và trang được phân phát từ bộ nhớ cache. Lý do là khi yêu cầu được lưu trong bộ nhớ cache, số httpContext.Session
được cung cấp với AuthorizeCore
là null
!? Dưới đây là một số mã đơn giản:
protected override bool AuthorizeCore(HttpContextBase httpContext) {
return (Session["userId"] != null)
}
Vì vậy, nếu httpContext.Session
là null
, đây rõ ràng là thất bại mỗi lần. Tôi cần phải truy cập vào phiên mặc dù, làm thế nào khác tôi có thể kiểm tra nếu yêu cầu được ủy quyền? Điều này không có ý nghĩa gì - nếu đây là cách nó nên được sau đó tôi sẽ không bao giờ có thể sử dụng các trang được lưu trữ cùng với xác thực trong ASP.NET MVC. Cứu giúp?
Vì vậy, bạn đang nói nếu tôi sử dụng nhà cung cấp tư cách thành viên tùy chỉnh dựa trên nhà cung cấp tư cách thành viên asp.net thông thường, tôi có thể kiểm tra xác thực người dùng bằng bộ nhớ đệm? Tại sao công việc đó - nhà cung cấp thành viên cần phiên cũng như nội bộ không? – Alex
Không bao giờ an toàn khi đặt thông tin nhạy cảm về bảo mật trong Phiên, dừng hoàn toàn. –
Và không, nhà cung cấp thành viên thường xuyên gần như không liên quan gì đến Phiên làm việc. Đọc hai liên kết cuối cùng trong câu trả lời của tôi. –