如何从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获得国家名称或代码任何人请帮助

如何从active directory表单Membership.GetUser(uname)中获取用户的国家/地区

默认情况下,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 获取用户数据