2011-08-27 20 views
1

在我的ASP.NET MVC 3应用程序中,我有两种类型的用户 - 普通用户和管理员用户。显然后者比前者拥有更大的特权。我有一个页面级别的授权实现,但对于屏幕级别的项目(显示此按钮,如果管理员等)我想知道什么是最合适的解决方案,使所有屏幕上可用的布尔IsAdmin标志。我可以想到一堆不同的方法cookie /会话变量/ httpcontext,但我想知道什么是用于成功的生产。任何指导表示赞赏提前ASP.NET MVC3 - 最合适的方式来存储IsAdmin信息

JP

感谢

回答

0

的ViewBag似乎是一个容易的选择。

ViewBag.UserIsAdmin = somevalue; 

这对每个视图都是可用的,并且旨在用于查看不属于模型一部分的数据。

唯一的缺点是你需要在需要它的视图上填充每一个请求,但是如果它是一个全局事物,你实际上可以在一个基本控制器的初始化方法中实现。

至于如何在请求之间存储它,而不是cookie。那些很容易被原谅。您可以使用会话将其存储在请求之间,或者如果您的基本控制器中的请求速度很快(并且无法使用会话),则可以简单地为每个请求重新填充该请求。

0

不要使用会话,因为你必须检查它是否超时或没有。在很多地方很难编码(我的经验)。
您可以使用由ASP.NET成员资格利用的表单身份验证。然后,您可以安全地使用HttpContext.User.Identity来检查用户权限