【问题标题】:Create a user with Active Directory使用 Active Directory 创建用户
【发布时间】:2019-06-04 17:00:17
【问题描述】:

我正在尝试在 Active Directory 中创建一个用户,使用的函数改编自我找到的一些示例代码。

public bool crearUsuario(string usu, string pass, string path)
{
    string path = @"LDAP://" + path;

    //string oGUID = string.Empty;
    try { 

        DirectoryEntry entrada  = new DirectoryEntry(path);

        DirectoryEntry nuevoUsuario = entrada.Children.Add("CN=" + usu, "users");
        nuevoUsuario.Properties["samAccountName"].Value = usu;
        nuevoUsuario.CommitChanges();
        //oGUID = nuevoUsuario.Guid.ToString();

        nuevoUsuario.Invoke("SetPassword", new object[] { pass });
        nuevoUsuario.CommitChanges();
        entrada.Close();
        nuevoUsuario.Close();

        return true;
    }
    catch (System.DirectoryServices.DirectoryServicesCOMException E)
    {
        //E.Message.ToString();
        return false;
    }
    //return oGUID;
}                 

原始代码返回一个字符串 (oGUID),但我只需要一个布尔值。

我的问题是,他们为什么使用那个字符串?我只需要truefalse 值,所以我不知道是否需要返回字符串而不是布尔值。

【问题讨论】:

  • 如何实现代码取决于您自己。但总的来说,我不会返回一个布尔值来表示成功或失败。相反,我会让异常冒泡到可以处理它的位置,或者我会创建一个不同的对象来表示成功或失败。例如,创建一个接口 IUserCreationResult,然后创建两个实现该接口 SuccessUserCreationResult 和 FailedUserCreationResult 的类。你的失败类可能​​有一个额外的属性来提供关于它失败的为什么的上下文。
  • 这有点推测,但原始方法的意图可能与您的相同,但原始编码器可能还需要用户的 GUID。从本质上讲,返回的空字符串就像一个假值,一个非空字符串就像一个真值,另外还有一个好处是您还拥有 GUID 值。
  • 我们无法猜测为什么该代码会返回一个字符串,尤其是因为我们不知道它来自哪里。

标签: c# active-directory


【解决方案1】:

String 对我来说似乎也是一个奇怪的选择:我会返回原始的 Guid 类型。但返回字符串、guid 或其他键的原因是,您希望在创建该用户帐户后执行某些操作。将新密钥作为原始创建函数的一部分返回很可能会为您以后节省一些工作。

如果您知道自己不会处于这种情况,那么返回 true/false... 就完全没问题了。请记住,关于让异常冒泡的问题的评论也有其优点。

【讨论】:

    猜你喜欢
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多