zoukankan      html  css  js  c++  java
  • 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";
            }
  • 相关阅读:
    [CSS] prefers-reduced-motion
    [VSCode] Adding Custom Syntax Highlighting to a Theme in VSCode
    Subversion/Git/ReviewBoard工作流程
    oracle hints
    Node.js学习(10)----文件系统fs
    网络子系统41_inet_peer平衡二叉树的删除
    由链表初始化看C语言的二级指针
    挣值管理不是搞数字游戏(4)——让挣值管理实用!
    关于数据库一致改关闭下redo日志文件丢失的处理办法的总结
    Android 操作系统的内存回收机制
  • 原文地址:https://www.cnblogs.com/wjx-blog/p/14730098.html
Copyright © 2011-2022 走看看