public JsonResult Register([FromBody] RegisterDto dto) { var existUser = _context.CanteenUsers.FirstOrDefault(p => p.Name == dto.Username); if (existUser != null) { return(Json(new RequestResult { State = RequestState.Failed, Msg = "用户名已存在" })); } else { var newUser = new CanteenUser { Name = dto.Username, Password = dto.Password, RealName = dto.RealName, Role = "user" }; _context.CanteenUsers.Add(newUser); if (_context.SaveChanges() == 1) { return(Json(new RequestResult { State = RequestState.Success })); } else { return(Json(new RequestResult { State = RequestState.Failed, Msg = "保存失败" })); } } }
public string GetToken([FromBody] CanteenUser user) { var existUser = this._context.CanteenUsers.FirstOrDefault(p => p.Name == user.Name && p.Password == user.Password); if (existUser != null) { var requestAt = DateTime.Now; // var expiresSpan = JwtAuthOption.ExpiresSpan; if (existUser.Role == "canteen") { //if (existUser.Name.ToLower() == "czt") expiresSpan = TimeSpan.FromHours(3); } var expiresIn = requestAt + expiresSpan;// JwtAuthOption.ExpiresSpan; var token = GenerateToken(existUser, expiresIn); return(JsonConvert.SerializeObject(new RequestResult { State = RequestState.Success, Data = new { requertAt = requestAt, expiresIn = expiresSpan.TotalSeconds,//JwtAuthOption.ExpiresSpan.TotalSeconds, tokeyType = JwtAuthOption.TokenType, accessToken = token } })); } else { return(JsonConvert.SerializeObject(new RequestResult { State = RequestState.Failed, Msg = "用户名或密码错误" })); } }
private string GenerateToken(CanteenUser user, DateTime expires) { var handler = new JwtSecurityTokenHandler(); ClaimsIdentity identity = new ClaimsIdentity( new GenericIdentity(user.Name, "TokenAuth"), new[] { new Claim("ID", user.ID.ToString()), new Claim(ClaimTypes.Role, user.Role) } ); var securityToken = handler.CreateToken(new SecurityTokenDescriptor { Issuer = JwtAuthOption.Issuer, Audience = JwtAuthOption.Audience, SigningCredentials = JwtAuthOption.SigningCredentials, Subject = identity, Expires = expires }); return(handler.WriteToken(securityToken)); }