1

我创建了一个 MVC 应用程序,用户可以通过 ADFS 或 Forms 登录进行身份验证,在这两种情况下,我都能够使用 User.IsInRole 方法检查我的用户表,该表具有与角色表相关的 roleID 属性在我的数据库中。这是通过在我的 webconfig 中包含以下部分来完成的:

<roleManager enabled="true" defaultProvider="DefaultRoleProvider" cacheRolesInCookie="true">
  <providers>
    <clear />
    <add name="DefaultRoleProvider" type="MyInternal.Providers.MyProvider, MyInternal" connectionStringName="MyContext" />
  </providers>
</roleManager>

我现在正在尝试实现 Windows 身份验证并设法获取用户域登录名等,但是当尝试按照与其他两种身份验证类型相同的步骤时,我无法让 IsInRole 工作。

如何将我的存储库中的用户绑定到身份验证用户。是否有某种类型的演员或需要的东西?我认为这可能是通过 ADFS 和 Forms 中的身份验证完成的。

4

1 回答 1

1

我能够通过在我的 ViewModel 中使用以下内容来解决这个问题:

this.UserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

            if (this.UserName.Contains("\\"))
            {
                string[] stringArray = this.UserName.Split(new Char[] { '\\' });
                this.UserName = stringArray[1];

                MyUser identity = userRepository.Get(u => u.Username == this.UserName).FirstOrDefault();
                HttpContext.Current.User = identity;
            }
于 2013-11-29T10:38:27.510 回答