如何从active directory表单Membership.GetUser(uname)中获取用户的国家/地区
本文关键字:获取 用户 地区 国家 uname active directory 表单 GetUser Membership | 更新日期: 2023-09-27 18:27:47
我使用active directory进行身份验证。我已成功使用进行身份验证
Membership.ValidateUser(login.UserName, login.Password)
方法,并使用从active directory获取用户详细信息Membership.GetUser(login.UserName)
但我无法获得country
名称我如何从AD获得国家名称或代码任何人请帮助
默认情况下,country
不是MembershipUser
中的属性,除非您在配置文件提供程序中手动指定它们。
你必须使用System.Web.Profile.ProfileBase类。这里有一个来自@Sky Sanders的伟大课程,它也使用会员课程
public class UserProfile : ProfileBase
{
public static UserProfile GetUserProfile(string username)
{
return Create(username) as UserProfile;
}
public static UserProfile GetUserProfile()
{
return Create(Membership.GetUser().UserName) as UserProfile;
}
[SettingsAllowAnonymous(false)]
public string CountryCode
{
get { return base["countryCode"] as string; }
set { base["countryCode"] = value; }
}
[SettingsAllowAnonymous(false)]
public string Description
{
get { return base["Description"] as string; }
set { base["Description"] = value; }
}
[SettingsAllowAnonymous(false)]
public string Location
{
get { return base["Location"] as string; }
set { base["Location"] = value; }
}
[SettingsAllowAnonymous(false)]
public string FavoriteMovie
{
get { return base["FavoriteMovie"] as string; }
set { base["FavoriteMovie"] = value; }
}
}
以下是一些有用的链接如何分配配置文件值?如何使用Profilebase类?
希望能有所帮助。
我从LDAP得到了答案-检索所有属性/值的列表?,
PrincipalContext ctx = new PrincipalContext(
ContextType.Domain,
ConfigurationManager.AppSettings["ADDomainName"],
ConfigurationManager.AppSettings["ADContainer"],
ConfigurationManager.AppSettings["ADUserName"],
ConfigurationManager.AppSettings["ADPassword"]);
UserPrincipal users = UserPrincipal.FindByIdentity(ctx, user.UserName);
DirectoryEntry entry = users.GetUnderlyingObject() as DirectoryEntry;
PropertyCollection props = entry.Properties;
if (entry.Properties["countryCode"].Value != null)
{
user.CountryCode = entry.Properties["countryCode"].Value.ToString();
}
它可以帮助任何人。。
虽然已经很晚了,但下面链接的教程确实可以帮助
如何从Active Directory 获取用户数据