You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在ASP.NET Core 1中通过C#获取NetSqlAzMan角色DSPCC的成员名称?

获取NetSqlAzMan中DSPCC角色的手动成员(ASP.NET Core 1.x)

当然可行!NetSqlAzMan本身就提供了完整的.NET API来操作权限系统,完全可以实现获取指定角色下手动添加的成员名称需求。针对你的ASP.NET Core 1.x应用,我给你整理了具体的实现步骤:

1. 安装NetSqlAzMan依赖

首先在你的ASP.NET Core项目中安装NetSqlAzMan的NuGet包。注意由于你使用的是ASP.NET Core 1.x,需要选择兼容该版本的NetSqlAzMan包(比如v3.3系列)。打开Package Manager Console执行以下命令:

Install-Package NetSqlAzMan

如果官方NuGet包不支持.NET Core 1.x,你可以下载NetSqlAzMan的源代码,针对.NET Core 1.x编译后引用生成的DLL文件。

2. 编写C#实现代码

创建一个方法来连接NetSqlAzMan数据库,定位到DSPCC角色并筛选手动添加的直接成员(手动添加的成员通常属于角色的直接成员,继承的成员不会出现在直接成员列表中):

using NetSqlAzMan;
using NetSqlAzMan.Interfaces;
using System.Collections.Generic;

public List<string> GetDSPCCManualMembers()
{
    var manualMemberNames = new List<string>();
    
    // 替换为你的NetSqlAzMan数据库连接字符串
    var dbConnectionString = "Server=你的数据库服务器;Database=NetSqlAzManDB;Integrated Security=True;";
    
    // 初始化NetSqlAzMan存储连接
    using (var azManStorage = new SqlAzManStorage(dbConnectionString))
    {
        // 获取NetSqlAzMan根存储
        var azManStore = azManStorage.GetStore();
        
        // 替换为包含DSPCC角色的应用程序名称
        var targetApplication = azManStore.GetApplication("你的应用程序名称");
        
        if (targetApplication == null)
        {
            // 处理应用程序不存在的情况
            return manualMemberNames;
        }
        
        // 获取DSPCC角色
        var dspccRole = targetApplication.GetRole("DSPCC");
        
        if (dspccRole != null)
        {
            // 获取角色的直接成员(手动添加的成员都在这里,继承的成员不会被包含)
            var directMembers = dspccRole.GetDirectMembers();
            
            foreach (var member in directMembers)
            {
                // 如果你需要筛选特定类型的成员(比如仅Windows用户),可以通过SidType判断
                // 示例:只添加Windows用户类型的手动成员
                // if (member.SidType == SqlAzManSidType.WindowsUser)
                // {
                //     manualMemberNames.Add(member.Name);
                // }
                // 否则直接添加所有手动成员名称
                manualMemberNames.Add(member.Name);
            }
        }
    }
    
    return manualMemberNames;
}

3. 代码说明

  • 请务必替换代码中的dbConnectionString为你的NetSqlAzMan数据库实际连接字符串
  • 替换你的应用程序名称为NetSqlAzMan中包含DSPCC角色的应用程序名称
  • 如果需要更精准的筛选(比如只获取手动添加的Windows用户/组、SQL用户),可以通过member.SidType属性进行判断,可选值包括SqlAzManSidType.WindowsUser、SqlAzManSidType.WindowsGroup、SqlAzManSidType.SqlUser等
  • 在ASP.NET Core 1.x中,你可以将这个方法注入到控制器或者服务中使用,符合依赖注入的设计模式

内容的提问来源于stack exchange,提问作者Omar Piga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:43:19