【问题标题】:asp.net role provider- get users email address?asp.net 角色提供者 - 获取用户电子邮件地址?
【发布时间】:2011-04-30 20:09:12
【问题描述】:

我正在使用角色提供程序,并让它通过他们的 Windows 登录来管理我的 Intranet 上的用户。 我如何使用他们的用户信息从 asp.net 中提取他们的电子邮件地址以及其他一些用户内容?

我需要连接到活动目录吗?如果这是要走的路,这将是一个很好的样本

谢谢大家

【问题讨论】:

    标签: asp.net active-directory roleprovider


    【解决方案1】:

    成员资格提供者对此负责,MembershipUser 类上有一个 Email 属性。 (请记住,无论提供者、SQL 或 AD 是什么,它都应该同样工作)

    查看this MSDN article for detailed information

    【讨论】:

    • 我使用的是角色提供者,而不是会员提供者。
    • 角色提供者不会为您获取该信息,它是为了建立对用户的授权,而不是对用户进行身份验证或获取他们的信息。您可能必须使用 Windows 客户端的成员资格提供程序,或使用目录服务来获取用户信息。
    【解决方案2】:

    伙计们,您可以通过以下方式从 Active Directory 中提取任何数据点。在我的代码中,我得到了用户的电子邮件

    SELECT mail FROM 'LDAP://DC=Domain,DC=win,DC=ml,dc=COM' WHERE samaccountname = 'userName'
    
                  System.Data.OleDb.OleDbConnection con;
                  System.Data.OleDb.OleDbDataAdapter da;
                  System.Data.OleDb.OleDbCommand cmd;
                  System.Data.DataTable dt = new System.Data.DataTable();
    
                  con = new System.Data.OleDb.OleDbConnection("Provider=ADsDSOObject;dsn=Active Directory Provider");
                  con.Open();
    
                  //                Create a command object on this connection
    
                  cmd = new System.Data.OleDb.OleDbCommand(this.tbQuery.Text, con);
                  da = new System.Data.OleDb.OleDbDataAdapter();
                  da.SelectCommand = cmd;
    
                  try
                  {
                        da.Fill(dt);
                        this.dgResults.DataSource = dt;
                  }
                  catch (System.Data.OleDb.OleDbException exc)
                  {
                        MessageBox.Show(exc.Message);
                  }
                  con.Close();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      • 2015-01-23
      相关资源
      最近更新 更多