首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC AuthorizeAttribute向ActionMethod传值?

ASP.NET MVC AuthorizeAttribute向ActionMethod传值?
EN

Stack Overflow用户
提问于 2010-05-14 09:49:27
回答 2查看 1.4K关注 0票数 6

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

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

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

代码语言:javascript
复制
ReviewGroup GetReviewGroupFromBatchCode(string batchCode);

如果用户无法访问ReviewGroup,并且OnAuthorization拒绝访问,它将返回null。

现在,我知道修饰过的操作方法只有在OnAuthorization通过时才会执行,但我不想再次访问数据库来获取ReviewGroup。

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

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

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2010-05-19 22:27:18

或者,避免命中数据库的最好也是最简单的方法之一是缓存。把它取回来,放到缓存里。如果再次需要它,它已经在内存中,不需要DB命中。如果没有,那么当缓存超出作用域时,对象也会超出作用域。

票数 1
EN

Stack Overflow用户

发布于 2010-05-14 10:56:59

除非您正在从ReviewGroup中执行一个非常大的select操作,或者您有一个庞大的数据库,否则第二次数据库命中不会是一个太大的问题。现代数据库在进行选择方面非常高效,特别是在索引正确的表中。

根据我的经验,这是进行授权的最佳方式,也是我在应用程序中授权特定操作的类似方法。

因此,简而言之,我一点也不担心第二次数据库命中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2831389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档