using System; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using IRaCIS.WX.CoreApi.Auth; using Microsoft.Extensions.Options; namespace IRaCIS.Core.API.Auth { public interface ITokenService { string GetToken(UserClaims user); } public class TokenService : ITokenService { private readonly JwtSetting _jwtSetting; public TokenService(IOptions option) { _jwtSetting = option.Value; } public string GetToken(UserClaims user) { //创建用户身份标识,可按需要添加更多信息 var claims = new Claim[] { new Claim(Microsoft.IdentityModel.JsonWebTokens.JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim("id", user.Id.ToString()), new Claim("name", user.FullName), new Claim("realName", user.RealName), new Claim("reviewerCode",user.ReviewerCode), }; ////创建令牌 var token = new JwtSecurityToken( issuer: _jwtSetting.Issuer, audience: _jwtSetting.Audience, signingCredentials: _jwtSetting.Credentials, claims: claims, notBefore: DateTime.Now, expires: DateTime.Now.AddDays(_jwtSetting.TokenExpireDays) ); string jwtToken = new JwtSecurityTokenHandler().WriteToken(token); return jwtToken; } } }