2011-11-04 85 views
2

我有一个与mvc 3 vb.net应用程序中的角色有关的问题..我有Admin,Developer,PowerAdmin角色..如果我想限制基于角色的视图选项我一直在使用,如果在视图中陈述隐藏链接都在一起,如:在MVC 3中使用角色3 VB.NET应用程序

@If HttpContext.Current.User.IsInRole("Admin") And Request.IsAuthenticated Then 
@<li><a href="@Url.Content("~/Admin/")">Administrative Tools</a></li> 
End If 

我也装饰在地方与授权控制器动作。问题是这样说我有几个动作,应该只能说一个用户谁是所有三个角色,甚至任何组合中的两个角色..我只是简单地嵌套在视图中的if语句来隐藏这些视图项?关于控制器的功能是什么..是否有可能装饰控制器功能的东西,如

<Authorize(Roles:="Admin" + "PowerAdmin")> 

,然后有只能由具有两个角色访问该功能????

+0

您可能正在寻找这样的事情:http://stackoverflow.com/questions/1148312/asp-net-mvc-decorate-authorize-with-multiple -enums – Keith

+0

我不明白为什么当ASP.NET和mvc 3建立角色管理时,我不得不使用枚举任何东西......是不是有一些方法可以在控制器函数的顶部使用一个干净的 ???看起来像很多箍跳跃,只是确保一个用户在这两个角色.. – Skindeep2366

回答

2

简单写两条独立的线路:

<Authorize(Roles := "Admin")> _ 
<Authorize(Roles := "PowerAdmin")> _ 
+0

这就是我认为它应该是。但我不确定..在黑暗中是否会看到用户是否在管理员,而不在乎PowerAdmin的基本角色..谢谢.. – Skindeep2366

-5

尝试在Enum上搜索;这是这类事情的完美课堂。

希望这会让你走上正轨。

+1

这实在没有什么比“让我谷歌为你”的答案。 –

+0

这可能是“让我谷歌为你”的答案。但我认为,枚举类是做到这一点的方式。 我无法输入任何非常好的例子的原因是因为我对它也很陌生。最近在我的新工作中发现了一些项目。 而且我很抱歉不知道你只能在这里给出完整的复制粘贴答案。 tbh,我的回答是,我只是说你应该使用Enum类,因为它更加有用而且完全没有任何困难。 我在这里试图做的就是指出某人朝着正确的方向前进。对不起,如果这没有让你满意。 –

+1

我不是说在这里放一个完整的复制/粘贴答案,我要求你直接回答这个问题。如果你有使用Enum来实现这一点的想法,那么请详细说明你的想法(如果你还没有尝试过,使用伪代码)。如果您将答案修改得更彻底并深思熟虑,请随时回复我。我很乐意将我的倒票改为更好的答案。 –