ASP.NET MVC 内联网应用程序。基于角色的身份验证链接到应用程序中的用户表

Posted

技术标签:

【中文标题】ASP.NET MVC 内联网应用程序。基于角色的身份验证链接到应用程序中的用户表【英文标题】:ASP.NET MVC Intranet Application. Roles Based Authentication linked to Users Table in application 【发布时间】:2014-04-22 19:23:40 【问题描述】:

我正在编写一个将使用 Active Directory 身份验证的 ASP.NET MVC 应用程序。

我不希望用户必须登录我希望能够从他们的域凭据对用户进行身份验证并为他们分配角色。

我希望能够使用某种管理视图为 AD 用户和 AD 组分配角色。

有什么资源可以解决这个问题吗?

最重要的是,我希望能够将域凭据与我的应用程序中的用户表链接起来(它本质上是一个 Helpdesk Ticket 应用程序)。如何将我的应用程序数据库中的用户成功链接到 Windows Authenticated 帐户?

谢谢

如果这没有意义,请要求澄清。

MVC 4 Intranet Authentication with Custom Roles

这似乎是一个很好的资源,但任何建议都会很棒

【问题讨论】:

您可以在创建项目时选择Windows Authentication,它会为您处理所有这些 @Jonesy 如何将 AD 帐户链接到管理区域中的用户表?如何使用此方法创建和管理角色?默认情况下它似乎所做的就是允许您显示用户名 @ASPNETMVC-Newbie:在 AD 中创建角色,并将用户分配给 AD 中的角色。使用HttpContext.Current.User.Identity.Name 可以链接到自定义表,它会为您提供经过身份验证的用户的名称。 【参考方案1】:

Windows Authentication 将验证用户是否存在于 AD 中,如果您想验证他们是否存在于您的用户表中,您可以使用 CustomAttribute(我使用的是 EntityFramework):

public class AuthorizeDB : AuthorizeAttribute

    ProjectDB db = new ProjectDB();

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    
        if (httpContext == null)
            return false;

        var name = httpContext.User.Identity.Name;
        return db.Users.FirstOrDefault(u => u.UserName == name) != null;
    

并使用[AuthorizeDB] 装饰您的类或为整个应用程序设置它。 User.Identity.Name 将以 Domain\Username 的形式出现

如果您在应用程序中使用自定义角色,它应该与任何其他类型的身份验证大致相同。将用户与角色相关联,然后验证他们所处的角色。

【讨论】:

以上是关于ASP.NET MVC 内联网应用程序。基于角色的身份验证链接到应用程序中的用户表的主要内容,如果未能解决你的问题,请参考以下文章

将新的 ASP.NET MVC 应用程序与现有角色集成

ASP.NET MVC 中的非字符串角色名称?

应用级别内联网用户的 Windows 身份验证(带有 VB 的 ASP.NET)

为啥要使用内联编码来开发 MVC ASP.NET?

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 17. 基于Claim和Policy的授权 上

ASP.NET MVC 如何创建自定义角色提供程序