按照公司名称筛选Active Directory用户,Asp.net Core 2.1
创始人
2024-08-24 02:30:22
0

要按照公司名称筛选Active Directory用户,您可以使用Asp.net Core 2.1和System.DirectoryServices命名空间中的相关类。以下是一个简单的代码示例:

  1. 首先,确保您已经在您的项目中添加了System.DirectoryServices命名空间。您可以通过在.csproj文件中的元素内添加以下代码来实现这一点:

  1. 然后,您可以创建一个名为ActiveDirectoryHelper的类,用于执行Active Directory操作。在该类中,添加以下代码:
using System.DirectoryServices;

public class ActiveDirectoryHelper
{
    private readonly string _domainPath;

    public ActiveDirectoryHelper(string domainPath)
    {
        _domainPath = domainPath;
    }

    public SearchResultCollection GetUsersByCompany(string companyName)
    {
        using (var directoryEntry = new DirectoryEntry(_domainPath))
        {
            using (var directorySearcher = new DirectorySearcher(directoryEntry))
            {
                directorySearcher.Filter = $"(&(objectCategory=user)(company={companyName}))";
                directorySearcher.PropertiesToLoad.Add("givenName"); // 用户名
                directorySearcher.PropertiesToLoad.Add("sn"); // 姓氏
                directorySearcher.PropertiesToLoad.Add("mail"); // 邮箱

                return directorySearcher.FindAll();
            }
        }
    }
}
  1. 然后,在您的控制器或服务中使用ActiveDirectoryHelper类。例如,在您的控制器中,您可以添加以下代码:
using Microsoft.AspNetCore.Mvc;
using System.Linq;

[Route("api/[controller]")]
[ApiController]
public class UsersController : ControllerBase
{
    private readonly ActiveDirectoryHelper _activeDirectoryHelper;

    public UsersController()
    {
        // 请将"LDAP://yourdomain.com"替换为您的Active Directory域路径
        _activeDirectoryHelper = new ActiveDirectoryHelper("LDAP://yourdomain.com");
    }

    [HttpGet("{companyName}")]
    public IActionResult GetUsersByCompany(string companyName)
    {
        var searchResults = _activeDirectoryHelper.GetUsersByCompany(companyName);

        var users = searchResults.Cast()
            .Select(result =>
            {
                var firstName = result.Properties["givenName"]?.Count > 0 ? result.Properties["givenName"][0].ToString() : "";
                var lastName = result.Properties["sn"]?.Count > 0 ? result.Properties["sn"][0].ToString() : "";
                var email = result.Properties["mail"]?.Count > 0 ? result.Properties["mail"][0].ToString() : "";

                return new
                {
                    FirstName = firstName,
                    LastName = lastName,
                    Email = email
                };
            })
            .ToList();

        return Ok(users);
    }
}

现在,您可以通过向以下URL发送GET请求来按照公司名称检索Active Directory用户:/api/users/{companyName}。将{companyName}替换为您要筛选的公司名称。

请注意,您需要替换代码中的"LDAP://yourdomain.com"为您的Active Directory域路径,并根据需要添加其他属性到directorySearcher.PropertiesToLoad。此示例仅加载了用户名(givenName)、姓氏(sn)和邮箱(mail)属性。

相关内容

热门资讯

wepokeai代打的胜率!w... wepokeai代打的胜率!wepower系统规律,wepoke辅助器真的有用,详细教程(有挂了解)...
wepokeai代打!微扑克规... wepokeai代打!微扑克规律吗,wepokeai代打,可靠技巧(有挂详情)是一款可以让一直输的玩...
WePoKe透明挂!aapok... WePoKe透明挂!aapoker有什么规律吗,aapoker有外挂,2025新版教程(有挂教程)您...
德州之星有外挂!wepoke系... 德州之星有外挂!wepoke系统是免费的吗,德扑之星系统发牌机制,规律教程(有挂教学)是一款可以让一...
微扑克系统发牌规律!wpk线上... 一、微扑克系统发牌规律简介了解软件请加微:136704302微扑克系统发牌规律是一款在线扑克游戏平台...
wpk透视辅助!微扑克使用方法... wpk透视辅助!微扑克使用方法,wepoke是有辅助,扑克教程(有挂教程)1、这是跨平台的wpk透视...
微扑克辅助器ios!wepok... 微扑克辅助器ios!wepoke透明挂怎么识别,wepoke透明挂辅助,详细教程(有挂透明)是一款可...
wepoke辅助有挂!德扑统计... wepoke辅助有挂!德扑统计软件,德扑之星如何分别是否,wpk教程(有挂透明),您好,wepoke...
智星德州菠萝!德州透视辅助,微... 您好,智星德州菠萝这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在这款...
智星德州菠萝有挂吗!aapok... 智星德州菠萝有挂吗!aapoker插件,德州软件辅助,黑科技教程(有挂辅助挂);人气非常高,ai更新...