Beispiel #1
0
        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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        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);
        }