public string CreateToken() { DateTime utcNow = DateTime.UtcNow; var claims = new List <Claim>() { new Claim("ID", "1"), new Claim("Name", "zsmes") }; JwtSecurityToken jwtToken = new JwtSecurityToken( issuer: "zsmes", //签发者 audience: "zsmeswebuser", //接收的一方 claims: claims, notBefore: utcNow, expires: utcNow.AddYears(1), signingCredentials: new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256) ); string token1 = new JwtSecurityTokenHandler().WriteToken(jwtToken); var tokenDescriptor = new SecurityTokenDescriptor // 创建一个 Token 的原始对象 { Issuer = "fan", Audience = "audi", Subject = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, "") }), Expires = DateTime.Now.AddMinutes(60), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(Encoding.ASCII.GetBytes(key)), SecurityAlgorithms.HmacSha256) }; //生成token方式2 SecurityToken securityToken = new JwtSecurityTokenHandler().CreateToken(tokenDescriptor); var token2 = new JwtSecurityTokenHandler().WriteToken(securityToken); return(token1); }
/// <summary> /// 此方法用来生成 Token /// </summary> /// <param name="username"></param> /// <param name="expireMinutes"></param> /// <returns></returns> public static string GenerateToken(string username, int expireMinutes = 120) { var tokenDescriptor = new SecurityTokenDescriptor // 创建一个 Token 的原始对象 { Subject = new ClaimsIdentity(new[] // Token的身份证,类似一个人可以有身份证,户口本 { new Claim(ClaimTypes.Name, username) // 可以创建多个 }), Expires = DateTime.UtcNow.AddMinutes(Convert.ToInt32(expireMinutes)), // Token 有效期 // 生成一个Token证书,第一个参数是密码,第二个参数是编码方式 SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(Convert.FromBase64String(Secret)), SecurityAlgorithms.HmacSha256) }; var tokenHandler = new JwtSecurityTokenHandler(); // 创建一个JwtSecurityTokenHandler类用来生成Token var stoken = tokenHandler.CreateToken(tokenDescriptor); // 生成一个编码后的token对象实例 var token = tokenHandler.WriteToken(stoken); // 生成token字符串,给前端使用 return(token); }
public static string GenerateToken(string username, int expireMinutes = 120) { // 此方法用来生成 Token var symmetricKey = Convert.FromBase64String(Secret); // 生成二进制字节数组 var tokenHandler = new JwtSecurityTokenHandler(); // 创建一个JwtSecurityTokenHandler类用来生成Token var now = DateTime.UtcNow; // 获取当前时间 var tokenDescriptor = new SecurityTokenDescriptor // 创建一个 Token 的原始对象 { Subject = new ClaimsIdentity(new[] // Token的身份证,类似一个人可以有身份证,户口本 { new Claim(ClaimTypes.Name, username) }), Expires = now.AddMinutes(Convert.ToInt32(expireMinutes)), // Token 有效期 Audience = "http://exorg.contoso.com", Issuer = "http://exorg.contoso.com", SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(symmetricKey), SecurityAlgorithms.HmacSha256) // 生成一个Token证书,第一个参数是根据预先的二进制字节数组生成一个安全秘钥,说白了就是密码,第二个参数是编码方式 }; var stoken = tokenHandler.CreateToken(tokenDescriptor); // 生成一个编码后的token对象实例 var token = tokenHandler.WriteToken(stoken); // 生成token字符串,给前端使用 return(token); }