【问题标题】:ASP.NET MVC Intranet Application. Roles Based Authentication linked to Users Table in applicationASP.NET MVC 内联网应用程序。基于角色的身份验证链接到应用程序中的用户表
【发布时间】: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 可以链接到自定义表,它会为您提供经过身份验证的用户的名称。

标签: c# asp.net-mvc windows-authentication


【解决方案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 的形式出现

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

【讨论】:

    猜你喜欢
    • 2020-03-04
    • 2012-06-29
    • 2013-10-14
    • 2014-10-14
    • 2014-05-23
    • 2021-03-31
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多