public async Task <MessageModel <JwtTokenOutDto> > JwtToken(JwtTokenInDto dto) { string jwt = string.Empty; dto.Pass = MD5Helper.MD5Encrypt32(dto.Pass); var user = (await _userAppService.Queryable(x => x.LoginName == dto.Name && x.LoginPwd == dto.Pass)).ToList(); if (user.Count > 0) { //基于角色授权 var userRoles = await _userAppService.GetUserRoleNameStr(dto.Name, dto.Pass); //如果是基于用户的授权策略,这里要添加用户;如果是基于角色的授权策略,这里要添加角色 var claims = new List <Claim> { new Claim(ClaimTypes.Name, dto.Name), new Claim(JwtRegisteredClaimNames.Jti, user.FirstOrDefault().Id), new Claim(ClaimTypes.Expiration, DateTime.Now.AddSeconds(_requirement.Expiration.TotalSeconds).ToString()) }; claims.AddRange(userRoles.Split(',').Select(s => new Claim(ClaimTypes.Role, s))); if (!Permissions.IsUseIds4) { var data = await _role2Module2PermissionAppService.RoleModuleMaps(); //角色,权限 关系列表 var list = (from item in data select new PermissionItem { Url = item.ModuleEntity?.LinkUrl, Role = item.RoleEntity?.Name, }).ToList(); _requirement.Permissions = list; } var token = JwtTokenHelper.BuildJwtToken(claims.ToArray(), _requirement); return(new MessageModel <JwtTokenOutDto>() { success = true, msg = "获取成功", response = token }); } else { return(await Task.FromResult(new MessageModel <JwtTokenOutDto>() { success = false, msg = "认证失败", })); } }
public async Task <MessageModel <JwtTokenOutDto> > RefreshToken(string token = "") { string jwtStr = string.Empty; if (string.IsNullOrEmpty(token)) { return(new MessageModel <JwtTokenOutDto>() { success = false, msg = "token无效,请重新登录!", }); } var tokenModel = JwtHelper.SerializeJwt(token); if (tokenModel != null && tokenModel.Uid != "") { var user = (await _userAppService.Queryable(x => x.Id == tokenModel.Uid)).FirstOrDefault(); if (user != null) { var userRoles = await _userAppService.GetUserRoleNameStr(user.LoginName, user.LoginPwd); //如果是基于用户的授权策略,这里要添加用户;如果是基于角色的授权策略,这里要添加角色 var claims = new List <Claim> { new Claim(ClaimTypes.Name, user.LoginName), new Claim(JwtRegisteredClaimNames.Jti, tokenModel.Uid), new Claim(ClaimTypes.Expiration, DateTime.Now.AddSeconds(_requirement.Expiration.TotalSeconds).ToString()) }; claims.AddRange(userRoles.Split(',').Select(s => new Claim(ClaimTypes.Role, s))); //用户标识 var identity = new ClaimsIdentity(JwtBearerDefaults.AuthenticationScheme); identity.AddClaims(claims); var refreshToken = JwtTokenHelper.BuildJwtToken(claims.ToArray(), _requirement); return(new MessageModel <JwtTokenOutDto>() { success = true, msg = "获取成功", response = refreshToken }); } } return(new MessageModel <JwtTokenOutDto>() { success = false, msg = "认证失败!", }); }
public async Task <IActionResult> GetJwtToken(string name, string pwd) { if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(pwd)) { return(Ok(new { success = false, msg = "用户名或密码不能为空", })); } pwd = Encryption.MD5(pwd); var getuserInfo = await userService.QueryUserInfoAsync(name, pwd); if (getuserInfo != null && getuserInfo.Userid > 0) { //模拟用户角色,实际逻辑应该从数据库查询 var userRoles = new List <string> { "Admin", "User" }; var claims = new List <Claim>() { new Claim("Name", getuserInfo.Username), //用户名 new Claim("Uid", getuserInfo.Userid.ToString()), //用户Id new Claim(ClaimTypes.Expiration, DateTime.Now.AddSeconds(requirement.Expiration.TotalSeconds).ToString()) //其他信息 }; claims.AddRange(userRoles.Select(o => new Claim("Roles", o))); //加入角色 var tokenStr = JwtTokenHelper.BuildJwtToken(claims.ToArray(), requirement); return(Ok(new { success = true, token = tokenStr, msg = "获取成功" })); } else { return(Ok(new { success = false, msg = "获取失败" })); } }