ASP.NET MVC3 - 存储IsAdmin信息的最合适方式

时间:2011-08-27 00:49:35

标签: c# asp.net-mvc

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

提前致谢

JP

3 个答案:

答案 0 :(得分:5)

http://msdn.microsoft.com/en-us/library/system.web.httpcontext.user.aspx

HttpContext.User的类型为IPrincipal,其中有一种方法IsInRole。如果您使用FormsAuthentication,您将免费获得此信息。 HttpContext.User将直接在任何视图中提供

答案 1 :(得分:0)

ViewBag看起来很容易。

ViewBag.UserIsAdmin = somevalue;

可用于每个视图,并且用于查看不属于模型的数据。

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

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

答案 2 :(得分:0)

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