コード例 #1
0
        public static string GenerateJWTToken(User userInfo, JWTResource jwtResource)
        {
            var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtResource.SecretKey));
            var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);

            var claims = new[]
            {
                new Claim(JwtRegisteredClaimNames.Sub, userInfo.UserName),
                new Claim(ClaimConfig.CLAIM_USER_ID, userInfo.Id.ToString()),
                new Claim(ClaimConfig.CLAIM_FULLNAME, userInfo.Name.ToString()),
                new Claim(ClaimConfig.CLAIM_ROLE, userInfo.Role.ToString()),
                new Claim(ClaimConfig.CLAIM_SUBSCRIPTION_TYPE, userInfo.SubscriptionType.ToString()),
                new Claim(ClaimConfig.CLAIM_LICENSE_PLAN, userInfo.LicensePlan.ToString()),
                new Claim(ClaimConfig.CLAIM_COUNTRY_CODE, userInfo.Country.Code),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
            };

            var token = new JwtSecurityToken(
                issuer: jwtResource.Issuer,
                audience: jwtResource.Audience,
                claims: claims,
                expires: DateTime.Now.AddMinutes(30),
                signingCredentials: credentials
                );

            return(new JwtSecurityTokenHandler().WriteToken(token));
        }
コード例 #2
0
        public async Task <IActionResult> Login([FromBody] LoginCredential login)
        {
            IActionResult response = Unauthorized();
            var           user     = await _userService.AuthenticateUser(login);

            if (user != null)
            {
                JWTResource jwtResource = new JWTResource
                {
                    SecretKey = _config["Jwt:SecretKey"],
                    Issuer    = _config["Jwt:Issuer"],
                    Audience  = _config["Jwt:Audience"]
                };

                var tokenString = JWTHelper.GenerateJWTToken(user, jwtResource);
                response = Ok(new
                {
                    token       = tokenString,
                    userDetails = user,
                });
            }
            return(response);
        }