我只是ASP.NET MVC的新手,我不知道如何實現某個任務的「正確方式」。ASP.NET MVC AuthorizeAttribute將值傳遞給ActionMethod?
本質上,我將登錄的userId存儲在HttpContext.User.Identity中,並且編寫了一個EnhancedAuthorizeAttribute
來執行一些自定義授權。
在覆蓋OnAuthorization
方法中,我的域模型命中數據庫以確保當前用戶標識可以訪問傳入的routeValue「BatchCode」。原型是:
ReviewGroup GetReviewGroupFromBatchCode(string batchCode);
如果用戶無法訪問ReviewGroup並且OnAuthorization會拒絕訪問,它將返回null。
現在,我知道裝飾的操作方法只會在OnAuthorization通過時執行,但我不想再次點擊數據庫以再次獲取ReviewGroup。
我在考慮將ReviewGroup存儲在HttpContext.Items["reviewGroup"]
中,並且現在可以從控制器訪問它。
這是一個可行的解決方案,還是我在錯誤的道路上?
謝謝!
嗯不,我不需要ReviewGroup對象多於一個請求。真的,我需要的只是將這個對象(在AuthorizeAttribute.OnAuthorization()中獲得)傳遞給ActionMethod()。 – 2010-05-14 02:07:24