Пример #1
0
        public async Task <LoginOutputDto> Login(LoginInputDto loginInputDto)
        {
            var user = _defaultDbContext.MbpUsers.Where(u => u.LoginName == loginInputDto.LoginName).FirstOrDefault();

            if (user != null)
            {
                if (user.Password != ApplicationHelper.EncryptPwdMd5(loginInputDto.Password))
                {
                    return(new LoginOutputDto()
                    {
                        AccessToken = new Jwt(), IsPassPwdCheck = false
                    });
                }

                // 如果是管理员权限就给管理员属性,如果是用户就给用户属性,这里只定义两种角色,一种是超管,一种是普通用户,这里的角色只做身份鉴定,不做鉴权用,方便区分超管类的API和普通用户的API
                // 安全级别较高的API需要超管的可以单独限定,其他按照全局授权策略来进行
                // token会默认添加用户名和登录名,现在根据需要,在这里扩展更多的扩展信息,加入角色名称,用户Id
                var token = await _jwtBearerService.CreateJwt(loginInputDto.LoginName, loginInputDto.ClientID, new List <Claim>()
                {
                    new Claim(ClaimTypes.Role, user.IsAdmin?"admin":"user"), // 角色名称,这里的ClaimTypes.Role,可以用来约束基于角色的权限验证
                    new Claim(ClaimTypes.Sid, user.Id.ToString())            // 登录名
                });

                return(new LoginOutputDto()
                {
                    AccessToken = token, Menus = new List <string>(), UserName = user.UserName, Role = user.IsAdmin ? "admin" : "user", IsPassPwdCheck = true
                });
            }

            return(new LoginOutputDto()
            {
                AccessToken = new Jwt(), IsPassPwdCheck = false
            });
        }
Пример #2
0
        public async virtual Task <Jwt> GetToken()
        {
            // todo 取出用户的角色
            var t = await _jwtBearerService.CreateJwt("123", "lixp", new List <Claim>()
            {
                new Claim(ClaimTypes.Role, "admin")
            });

            return(t);
        }
Пример #3
0
        public async Task <LoginOutputDto> Login(LoginInputDto loginInputDto)
        {
            var user = _defaultDbContext.MbpUsers.Where(u => u.LoginName == loginInputDto.LoginName).FirstOrDefault();

            if (user != null)
            {
                if (user.Password != ApplicationHelper.EncryptPwdMd5(loginInputDto.Password))
                {
                    return(new LoginOutputDto()
                    {
                        AccessToken = new Jwt(), IsPassPwdCheck = false
                    });
                }

                // 如果是管理员权限就给管理员属性,如果是用户就给用户属性,这里只定义两种角色,一种是超管,一种是普通用户,这里的角色只做身份鉴定,不做鉴权用
                var token = await _jwtBearerService.CreateJwt(loginInputDto.LoginName, loginInputDto.ClientID, new List <Claim>()
                {
                    new Claim(ClaimTypes.Role, user.IsAdmin?"admin":"user")
                });

                // 取出用户的菜单权限
                var menus = (from tuser in _defaultDbContext.Set <MbpUser>()
                             join tuserrole in _defaultDbContext.Set <MbpUserRole>()
                             on tuser.Id equals tuserrole.UserId
                             join trole in _defaultDbContext.Set <MbpRole>()
                             on tuserrole.RoleId equals trole.Id
                             join trolemenu in _defaultDbContext.Set <MbpRoleMenu>()
                             on trole.Id equals trolemenu.RoleId
                             join tmenu in _defaultDbContext.Set <MbpMenu>()
                             on trolemenu.RoleId equals tmenu.Id
                             select tmenu.Path).ToList();

                return(new LoginOutputDto()
                {
                    AccessToken = token, Menus = menus, UserName = user.UserName, Role = user.IsAdmin ? "admin" : "user", IsPassPwdCheck = true
                });
            }

            return(new LoginOutputDto()
            {
                AccessToken = new Jwt(), IsPassPwdCheck = false
            });
        }