能否在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
相关产品推荐
相关产品推荐

