授权MVC3-ASP.NET

时间:2011-06-01 12:53:15

标签: asp.net-mvc-3

我在我的应用程序中使用Windows身份验证。我正在使用MVC3 -Asp.Net和Entity框架。我有一个菜单列表,它们是按钮。我使用站点地图使用它们显示它们。我可以使用Active目录中可用的角色隐藏或显示这些按钮。我有两个问题

1)如果我以基本用户身份登录(某些按钮对我来说不可见),这就是我想要的,但如果我在浏览器中输入一个Controller / Action(这个页面对我来说应该是不可见的)它加载了。

解决方案:

我正在检查用户及其作为Action中第一行的角色,如果我有权查看,那么我正在显示,否则重定向到另一页。 从Active Directory验证用户需要时间。

2)如果我以基本用户身份登录并尝试查看已被超级用户授权的操作,它仍会显示(当我手动键入控制器和操作名称时)

解决方案:

我正在检查用户及其作为Action中第一行的角色,如果我有权查看,那么我正在显示,否则重定向到另一页。 从Active Directory验证用户需要时间。

澄清:

我可以将Authorize属性与角色一起使用,我认为这仅适用于ASP.NET成员资格,因此我的角色来自系统中的Active Directory似乎不起作用。

问题:

任何人都可以指向我的解决方案,而不是检查每个视图的权限,我不能在全局中执行此操作。 asax 文件。如果我可以在登录时对用户进行一次身份验证,我无需为其他人提供身份验证。

1 个答案:

答案 0 :(得分:1)

在这两种情况下,我建议您编写自定义RoleProvider Active Directory Role Provider。 然后,如果您正确设置了MembershipProvider和RoleProvider,则Authorize属性应该有效。

为避免通过RoleProvider在每个请求上检索用户的角色,您可以在会话中缓存该用户的角色。您可以在自定义RoleProvider中或使用自定义Authorize属性执行此操作。