コード例 #1
0
        private async Task <string> GenerateTokenWithClaims(string email)
        {
            var roles = await _roleService.GetRoleByUser(email);

            var user = await _userManager.FindByEmailAsync(email);

            IList <Claim> claims = new List <Claim>
            {
                new Claim(JwtRegisteredClaimNames.Email, email),
                new Claim(ClaimsIdentity.DefaultNameClaimType, email),
                new Claim("userIdClaim", user.Id.ToString())
            };

            if (roles.Contains(','))
            {
                foreach (var role in roles.Split(','))
                {
                    claims.Add(new Claim(ClaimsIdentity.DefaultRoleClaimType, role));
                }
            }
            else
            {
                claims.Add(new Claim(ClaimsIdentity.DefaultRoleClaimType, roles));
            }

            if (user.PersonalInformationId != Guid.Empty)
            {
                claims.Add(new Claim("infoIdClaim", user.PersonalInformationId.ToString()));
            }

            if (user.PatientId != Guid.Empty)
            {
                claims.Add(new Claim("patientIdClaim", user.PatientId.ToString()));
            }

            if (user.WatcmanId != Guid.Empty)
            {
                claims.Add(new Claim("watchmanIdClaim", user.WatcmanId.ToString()));
            }

            return(_jwtGenerator.GenerateJSONWebToken(claims.ToArray()));
        }