我创建了一个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中的身份验证完成的。
答案 0 :(得分: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;
}