示例#1
0
    private async Task RefreshToken(JwtParams jwtParams)
    {
        var newToken = _provider.RefreshToken(jwtParams.RefreshToken);

        if (newToken == null)
        {
            await ResponseErrorAsync("Invalid refresh token.");

            return;
        }
        await ResponseSuccessAsync(newToken);
    }
示例#2
0
    private async Task GenerateToken(JwtParams jwtParams)
    {
        var authResult = await _authenticator.AuthenticateAsync(jwtParams);

        if (authResult == null || !authResult.Success)
        {
            await ResponseErrorAsync(authResult?.Message);

            return;
        }

        var jwtResult = await _provider.GenerateToken(authResult.Claims);

        jwtResult.UserInfo = authResult.UserInfo;

        await ResponseSuccessAsync(jwtResult);
    }
        /// <summary>
        /// 获取基于JWT的Token
        /// </summary>
        /// <param name="claims"></param>
        /// <param name="jwtSetting"></param>
        /// <returns></returns>
        public virtual string BuildJwtToken(Claim[] claims, JwtParams jwtParams)
        {
            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtParams.SecurityKey));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            // 实例化JwtSecurityToken
            var jwtToken = new JwtSecurityToken(
                issuer: jwtParams.Issuer,
                audience: jwtParams.Audience,
                claims: claims,
                notBefore: DateTime.Now,
                expires: DateTime.Now.AddDays(jwtParams.ExpireDays)
                .AddHours(jwtParams.ExpireHours)
                .AddMinutes(jwtParams.ExpireMinutes)
                .AddSeconds(jwtParams.ExpireSeconds),
                signingCredentials: creds
                );

            // 生成 Token
            return(new JwtSecurityTokenHandler().WriteToken(jwtToken));
        }
示例#4
0
        public ApiResult GetToken([FromServices] IConfiguration configuration)
        {
            JwtParams jwtParams = configuration.GetSection("JwtSetting").Get <JwtParams>();
            DateTime  expiresAt = DateTime.Now.AddDays(jwtParams.ExpireDays)
                                  .AddHours(jwtParams.ExpireHours)
                                  .AddMinutes(jwtParams.ExpireMinutes)
                                  .AddSeconds(jwtParams.ExpireSeconds);

            var claims = new List <Claim>
            {
                new Claim(ClaimTypes.Name, "CNX"),
                new Claim(JwtRegisteredClaimNames.Sid, "2"),
                new Claim(ClaimTypes.Expiration, expiresAt.ToString()),
                new Claim(ClaimTypes.Role, "Admin"),
                new Claim("AvatarUrl", "3")
            };
            var token = _jWTTokenBuilder.BuildJwtToken(claims.ToArray(), jwtParams);

            return(new ApiResult(token));
        }
示例#5
0
 public Task <AuthenticateResult> AuthenticateAsync(JwtParams jwtParams)
 {
     throw new NotImplementedException();
 }