public IActionResult RefreshToken(string refreshToken) { return(Token(new LoginDto() { Password = "******", UserName = "******" })); UserService service = new UserService(); SecurityToken validatedToken; var claimsPrincipal = JwtTokenUtil.Decode(refreshToken, _jwtSettings, out validatedToken); //判断使用的是不是refreshtoken if (claimsPrincipal != null && claimsPrincipal.HasClaim(a => a.Type == "tokenType")) { //根据claim中的id再次从数据库找到user 使用最新的user信息重新签发token var userId = claimsPrincipal.Claims.First(a => a.Type == ClaimTypes.Sid).Value; var user = service.GetUser(Convert.ToInt64(userId)); //重新签发token和refreshtoken List <Claim> claims = new ClaimUser(user).GetClaims(); //签发token var token = JwtTokenUtil.Encode(claims, _jwtSettings); //签发refreshtoken claims.Add(new Claim("tokenType", "refresh")); var refreshtoken = JwtTokenUtil.Encode(claims, _jwtSettings); return(Ok(new { token, refreshtoken })); } //如果refreshtoken 失效了 说明该用户已经一个月没有和你的应用交互了 所以设置为未授权让其重新登录 return(Unauthorized()); }
public async Task <IActionResult> PutClaimUser(Guid id, ClaimUser claimUser) { if (id != claimUser.ClaimId) { return(BadRequest()); } _context.Entry(claimUser).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ClaimUserExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
//[CaptchaValidate] public IActionResult Token(LoginDto dto) { try { //return Ok(new { status = 0}); //UserService service = new UserService(); ClaimUser claimUser = null; if (dto.UserName == "admin" && dto.Password == "123") { claimUser = new ClaimUser(new User() { UserId = 1, UserName = "******", Password = "******", NickName = "songlin" }); } //var claimUser = service.Login(dto.UserName, dto.Password); if (claimUser == null) { //string clientId = HttpContext.Request.Cookies["clientId"]; //string code = ValidateCode.GetCode(clientId); return(Ok(new { code = 1, msg = "用户名或者密码错误" })); } List <Claim> claims = claimUser.GetClaims(); //签发token var token = JwtTokenUtil.Encode(claims, _jwtSettings); //签发refreshtoken claims.Add(new Claim("tokenType", "refresh")); var refreshToken = JwtTokenUtil.Encode(claims, _jwtSettings); return(Ok(new { code = 0, data = new { token, refreshToken, _jwtSettings.Expires, type = "Bear" } })); } catch (Exception ex) { Common.LogHelper.Error("Error", ex); return(Ok(new { code = 1, msg = ex.Message })); } }
public async Task <ActionResult <ClaimUser> > PostClaimUser(ClaimUser claimUser) { _context.ClaimUser.Add(claimUser); try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { if (ClaimUserExists(claimUser.ClaimId)) { return(Conflict()); } else { throw; } } return(CreatedAtAction("GetClaimUser", new { id = claimUser.ClaimId }, claimUser)); }