C# ASP.NET MVC3-存储iAdmin信息的最合适方式

C# ASP.NET MVC3-存储iAdmin信息的最合适方式,c#,asp.net-mvc,C#,Asp.net Mvc,在我的ASP.NET MVC 3应用程序中,我有两种类型的用户——普通用户和管理员用户。显然,后者比前者享有更大的特权。我有一个页面级别的授权实现,但是对于屏幕级别的项目(如果管理员等,则显示此按钮),我想知道什么是使布尔IsAdmin标志在所有屏幕上可用的最合适的解决方案。我可以想到很多不同的方法cookies/session variables/httpcontext,但我想知道在生产中成功使用了哪些方法。感谢您的指导 提前谢谢 JP可视包似乎很适合 ViewBag.UserIsAdmin

在我的ASP.NET MVC 3应用程序中,我有两种类型的用户——普通用户和管理员用户。显然,后者比前者享有更大的特权。我有一个页面级别的授权实现,但是对于屏幕级别的项目(如果管理员等,则显示此按钮),我想知道什么是使布尔IsAdmin标志在所有屏幕上可用的最合适的解决方案。我可以想到很多不同的方法cookies/session variables/httpcontext,但我想知道在生产中成功使用了哪些方法。感谢您的指导

提前谢谢


JP

可视包似乎很适合

ViewBag.UserIsAdmin = somevalue;
这对每个视图都可用,并且用于不属于模型的视图数据

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


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

ViewBag似乎很适合

ViewBag.UserIsAdmin = somevalue;
这对每个视图都可用,并且用于不属于模型的视图数据

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

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

HttpContext.User
属于
IPrincipal
类型,它有一个方法
IsInRole
。如果您使用的是
FormsAuthentication
,您将免费获得此文件<代码>HttpContext。用户可以直接从任何视图中访问


HttpContext.User
属于
IPrincipal
类型,它有一个方法
IsInRole
。如果您使用的是
FormsAuthentication
,您将免费获得此文件
HttpContext。用户可以直接从任何视图中访问
请勿使用会话,因为您必须检查会话是否超时。在很多地方很难编写代码(我的经验)。

您可以使用ASP.NET成员资格所利用的表单身份验证。然后您可以安全地使用HttpContext.User.Identity检查用户权限

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