Пример #1
0
        public async Task <ApiResponseModel <JwtTokenDto> > GetJwtStr(string name, string pass)
        {
            string jwtStr = string.Empty;

            LogServer.WriteLog("用户登录:" + name);
            if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(pass))
            {
                return(ApiResponse.Error <JwtTokenDto>("用户名或密码不能为空"));
            }
            pass = MD5Helper.MD5Encrypt32(pass);
            var userInfo = await _sysUserInfoServices.GetUserByLogin(name, pass);

            if (userInfo == null)
            {
                return(ApiResponse.Error <JwtTokenDto>("用户名不存在"));
            }
            var roleList = await _sysUserInfoServices.GetUserRoleByUserId(userInfo.uID);

            var claims = new List <Claim> {
                new Claim(ClaimTypes.Name, name),
                new Claim(JwtRegisteredClaimNames.Jti, userInfo.uID.ObjToString()),
                new Claim(ClaimTypes.Expiration, DateTime.Now.AddSeconds(_requirement.Expiration.TotalSeconds).ToString())
            };

            claims.AddRange(roleList.Select(s => new Claim(ClaimTypes.Role, s.Name)));



            var data = await _roleModulePermissionServices.RoleModuleMaps();

            var list = data.OrderBy(m => m.Id).Select(m => new PermissionItem
            {
                Url  = m.Module?.LinkUrl,
                Role = m.Role?.Name,
            }).ToList();

            _requirement.Permissions = list;
            //用户标识
            var identity = new ClaimsIdentity(JwtBearerDefaults.AuthenticationScheme);

            identity.AddClaims(claims);
            var token = JwtHelper.BuildJwtToken(claims, _requirement);

            return(ApiResponse.Success(token));
        }