是否可以在 MVC for Asp.NET 中使用 Outlook 电子邮件组作为角色?
Posted
技术标签:
【中文标题】是否可以在 MVC for Asp.NET 中使用 Outlook 电子邮件组作为角色?【英文标题】:Is it possible to use Outlook Email Groups as Roles in MVC for Asp.NET? 【发布时间】:2012-04-23 16:41:30 【问题描述】:我需要设置此 MVC 应用程序以使用 Windows 身份验证和 Outlook 电子邮件组为用户分配角色,然后我可以授权这些角色中的用户能够在控制器中执行特定操作。
我搜索了一下,发现了一些非常有用的信息,关于角色如何与 MVC 一起工作,以及我如何将角色提供者类用于许多基于角色的操作。但是,这些角色来自 SQL 数据库,不使用 Outlook 电子邮件组和 Windows 身份验证来授权用户。
我特别想了解如何利用 Outlook 电子邮件组,但我无法轻松找到此信息。谁能帮帮我?
<authentication mode="Windows">
</authentication>
<authorization>
<deny users="?" />
<allow users="?" />
<allow roles="HAH\Domain Users"/>
<deny users="*" />
</authorization>
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
<providers>
<clear />
<add
name="AspNetWindowsTokenRoleProvider"
type="System.Web.Security.WindowsTokenRoleProvider"
applicationName="/" />
</providers>
</roleManager>
【问题讨论】:
您是指 Exchange 电子邮件组吗?如果是这样,答案是肯定的,因为它们是特殊的 Active Directory 组。 是的,这可能就是我的意思。你知道我可以看的任何参考资料吗?与此同时,我将开始用谷歌搜索这些关键字。 【参考方案1】:如果您在 Active Directory 中的组为 Exchange Distribution Lists,则可以使用任何使用 Windows 身份验证的 MVC 示例。
甚至为此提供了一个 Visual Studio 模板。创建一个新的 MVC Web 应用程序,然后选择 Intranet Application。
更新
您的 web.config 存在一些问题。您应该只指定一个拒绝元素和一个允许元素:
<authorization>
<deny users="?" />
<allow roles="HAH\Domain Users"/>
</authorization>
这将拒绝所有未经授权的用户并允许域用户。请注意,MVC 遵循[Authorize]
属性中定义的角色。我相信该属性会覆盖 web.config 设置。
在您的控制器中,您可以为整个控制器类或特定操作方法指定角色。
[Authorize(Roles = "Group 1, Group 2, Group3")]
public class MyController
或
public class MyController
[Authorize(Roles = "Group 1, Group 2, Group3")]
public ActionResult MyAction()
return View();
【讨论】:
asp.net/mvc/tutorials/older-versions/security/… 不幸的是,我需要完成当前的项目,无法创建新项目。不过谢谢你的帮助。 对现有项目进行更改真的很容易。只需比较 web.config 文件并验证您的设置是否与 this article 匹配。 谢谢。如果 windows 身份验证已经启用并正在使用,是否还需要进行更改? 如果您已经在使用 Windows 身份验证,您可能只需要更改[Authorize]
属性中的角色名称。以上是关于是否可以在 MVC for Asp.NET 中使用 Outlook 电子邮件组作为角色?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用 maproute 在 asp.net mvc 中路由多个参数
在 ASP.Net MVC 应用程序中从 Facebook SDK for .Net 获取 Facebook 用户访问令牌
是否可以在 ASP.NET MVC 的脚本块中引用 ViewData?