ASP.NET MVC AuthorizeAttribute将值传递给ActionMethod?

Ada*_*sev 6 c# asp.net asp.net-mvc actionmethod authorize-attribute

我只是ASP.NET MVC的新手,我不确定如何以"正确的方式"完成某项任务.

本质上,我将登录的userId存储在HttpContext.User.Identity中,并编写了一个EnhancedAuthorizeAttribute来执行一些自定义授权.

在overriden OnAuthorization方法中,我的域模型命中数据库以确保当前用户id可以访问传入的routeValue"BatchCode".原型是:

ReviewGroup GetReviewGroupFromBatchCode(string batchCode);
Run Code Online (Sandbox Code Playgroud)

如果用户无法访问ReviewGroup,则它将返回null,然后OnAuthorization拒绝访问.

现在,我知道装饰动作方法只有在OnAuthorization通过时才会执行,但我不想再次访问数据库以再次获取ReviewGroup.

我正在考虑将ReviewGroup存储在控制器中HttpContext.Items["reviewGroup"]并从控制器访问它.

这是一个可行的解决方案,还是我走错了路?

谢谢!

Raj*_*mal 1

HttpContext.Items 仅在请求期间有效。如果你想坚持更长时间,你应该把它放进去

a) 会话 - 良好

b) 个人资料 - 没有看到优势

c) cookie - 不推荐

d) 每次都访问数据库 - 应该没问题

将其存储在filterContext.RouteData.DataTokens中?