public async static Task <string> GenerateToken(UserToken UserToken, int expireMinutes = 20) { Models.ManagerFiles.Settings setting = Models.ManagerFiles.ManagerFilesService.GetSettingsInfo(); string Secret = setting.Secret; var symmetricKey = Convert.FromBase64String(Secret); var tokenHandler = new JwtSecurityTokenHandler(); var now = DateTime.UtcNow; var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new[] { new Claim("Id", UserToken.Id.ToString()), new Claim("Email", UserToken.Email), new Claim("UserName", UserToken.UserName), }), Expires = now.AddMinutes(Convert.ToInt32(expireMinutes)), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(symmetricKey), SecurityAlgorithms.HmacSha256Signature) }; var stoken = tokenHandler.CreateToken(tokenDescriptor); var token = tokenHandler.WriteToken(stoken); return(token); }
public static bool ValidateToken(string token, out UserToken UserToken) { UserToken = new UserToken(); var tokenHandler = new JwtSecurityTokenHandler(); var jwtToken = tokenHandler.ReadToken(token) as JwtSecurityToken; if (jwtToken == null) { return(false); } var a = jwtToken.Claims.GetType(); var b = jwtToken.Claims.ToArray(); Dictionary <string, string> dAttributes = new Dictionary <string, string>(); for (int k = 0; k < b.Count(); k++) { string type = b[k].Type; string value = b[k].Value; dAttributes.Add(type, value); } UserToken.Id = int.Parse(dAttributes["Id"]); UserToken.Email = dAttributes["Email"]; UserToken.UserName = dAttributes["UserName"]; Models.ManagerFiles.Settings setting = Models.ManagerFiles.ManagerFilesService.GetSettingsInfo(); string Secret = setting.Secret; byte[] key = Convert.FromBase64String(Secret); TokenValidationParameters parameters = new TokenValidationParameters() { RequireExpirationTime = true, ValidateIssuer = false, ValidateAudience = false, IssuerSigningKey = new SymmetricSecurityKey(key) }; SecurityToken securityToken; try { ClaimsPrincipal principal = tokenHandler.ValidateToken(token, parameters, out securityToken); Boolean akkk = principal.Identity.IsAuthenticated; var clam = principal.Claims; // Get the claims values var exp = principal.Claims.Where(c => c.Type == "exp") .Select(c => c.Value).SingleOrDefault(); return(akkk); } catch (Exception) { return(false); } }