Exemplo n.º 1
0
        /// <summary>
        /// 生成Token
        /// </summary>
        /// <param name="username">用户</param>
        /// <param name="identity">身份</param>
        /// <returns></returns>
        public async Task <string> GenerateToken(LoginRequestModel model)
        {
            try
            {
                var claims = new List <Claim>
                {
                    new Claim(JwtRegisteredClaimNames.NameId, model.NTID),
                    new Claim(JwtRegisteredClaimNames.Sub, _jwtOptions.Subject),
                    new Claim(JwtRegisteredClaimNames.Jti, await _jwtOptions.JtiGenerator()),
                    new Claim(JwtRegisteredClaimNames.Iat, _jwtOptions.IssuedAt.ToString())
                };

                var jwt = new JwtSecurityToken(
                    issuer: _jwtOptions.Issuer,
                    audience: _jwtOptions.Audience,
                    claims: claims,
                    notBefore: _jwtOptions.NotBefore,
                    expires: _jwtOptions.Expiration,
                    signingCredentials: await _jwtOptions.SigningCredentials()
                    );

                var encodeJwt = new JwtSecurityTokenHandler().WriteToken(jwt);


                var response = new
                {
                    auth_token = encodeJwt,
                    expires_in = (int)_jwtOptions.ValidFor.TotalSeconds,
                    token_type = "Bearer"
                };

                return(JsonConvert.SerializeObject(response, new JsonSerializerSettings {
                    Formatting = Formatting.Indented
                }));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }