Tôi chỉ là một người mới đến với ASP.NET MVC và không chắc chắn làm thế nào để đạt được một nhiệm vụ nhất định "đúng cách".ASP.NET MVC AuthorizeAttribute truyền giá trị cho ActionMethod?
Về cơ bản, tôi lưu trữ userId đã đăng nhập trong HttpContext.User.Identity và đã viết EnhancedAuthorizeAttribute
để thực hiện một số ủy quyền tùy chỉnh.
Trong phương pháp được ghi đè lên OnAuthorization
, mô hình miền của tôi truy cập cơ sở dữ liệu để đảm bảo id người dùng hiện tại có thể truy cập thông qua routeValue "BatchCode". Nguyên mẫu là:
ReviewGroup GetReviewGroupFromBatchCode(string batchCode);
Nó sẽ trả về null nếu người dùng không thể truy cập Nhóm đánh giá và OnAuthorization sau đó từ chối truy cập.
Bây giờ, tôi biết phương pháp hành động được trang trí sẽ chỉ được thực thi nếu OnAuthorization vượt qua, nhưng tôi không muốn nhấn cơ sở dữ liệu lần thứ hai để có được ReviewGroup một lần nữa.
Tôi đang nghĩ đến việc lưu trữ Nhóm đánh giá trong HttpContext.Items["reviewGroup"]
và truy cập điều này từ bộ điều khiển tại thời điểm này.
Đây có phải là giải pháp khả thi hay tôi đang đi sai đường?
Cảm ơn!
Không, tôi không cần đối tượng ReviewGroup cho nhiều yêu cầu. Thực sự, tất cả những gì tôi cần là truyền đối tượng này (thu được trong AuthorizeAttribute.OnAuthorization()) tới ActionMethod(). –