Identityserver4添加角色和授权角色的方法
添加角色:
public string AddRole(string roleName) { if (_roleManager.FindByNameAsync(roleName).Result == null) { var role = new IdentityRole { Name = roleName }; var result = _roleManager.CreateAsync(role).Result; } return "success"; }
授权角色给用户:
public string AddRolesWithUserName(string userName, string roleNames) { var user = _userManager.FindByNameAsync(userName).Result; var allRoles = _roleManager.Roles.ToList(); //系统中所有的角色 var nowRoles = _userManager.GetRolesAsync(user).Result; //该用户现有的角色“Name” foreach (var nowRole in nowRoles) { var normalizedName = allRoles.Where(r => r.Name == nowRole).First().NormalizedName;//取得现有角色的NormalizedName var deleteResult = _userManager.RemoveFromRoleAsync(user, normalizedName).Result; //删除不要的角色 } var result = _userManager.AddToRolesAsync(user, roleNames.Split(',')).Result; //添加需要的角色 _userManager.UpdateAsync(user); //完成储存 return "success"; }
完整的controller
public class RoleController : ControllerBase { private readonly UserManager<IdentityUser> _userManager; private readonly RoleManager<IdentityRole> _roleManager; private readonly IIdentityServerInteractionService _interaction; private readonly IClientStore _clientStore; private readonly IAuthenticationSchemeProvider _schemeProvider; private readonly IEventService _events; public RoleController( UserManager<IdentityUser> userManager, RoleManager<IdentityRole> roleManager, IIdentityServerInteractionService interaction, IClientStore clientStore, IAuthenticationSchemeProvider schemeProvider, IEventService events) { _userManager = userManager; _roleManager = roleManager; _interaction = interaction; _clientStore = clientStore; _schemeProvider = schemeProvider; _events = events; } public string AddRole(string roleName) { if (_roleManager.FindByNameAsync(roleName).Result == null) { var role = new IdentityRole { Name = roleName }; var result = _roleManager.CreateAsync(role).Result; } return "success"; } public string AddRolesWithUserName(string userName, string roleNames) { var user = _userManager.FindByNameAsync(userName).Result; var allRoles = _roleManager.Roles.ToList(); //系统中所有的角色 var nowRoles = _userManager.GetRolesAsync(user).Result; //该用户现有的角色“Name” foreach (var nowRole in nowRoles) { var normalizedName = allRoles.Where(r => r.Name == nowRole).First().NormalizedName;//取得现有角色的NormalizedName var deleteResult = _userManager.RemoveFromRoleAsync(user, normalizedName).Result; //删除不要的角色 } var result = _userManager.AddToRolesAsync(user, roleNames.Split(',')).Result; //添加需要的角色 _userManager.UpdateAsync(user); //完成储存 return "success"; }
分类:
IdentityServer
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2018-05-04 iis 503 错误 Windows 不能让您登录,因为不能加载您的配置文件。请检查您是否连接到网络