AssetManager.API/AssetManager.Services/Services/JwtService.cs
fanfpy cd5c3aedbe feat: 初始化项目结构并添加基础功能
- 创建解决方案及各项目层
- 添加API基础控制器和DTO定义
- 实现JWT认证服务和微信登录服务
- 添加Swagger文档支持
- 配置项目依赖和构建文件
2026-02-18 20:36:09 +08:00

44 lines
1.5 KiB
C#

using Microsoft.Extensions.Configuration;
using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
namespace AssetManager.Services.Services;
public class JwtService
{
private readonly string _secretKey;
private readonly string _issuer;
private readonly string _audience;
public JwtService(IConfiguration configuration)
{
_secretKey = configuration["Jwt:SecretKey"] ?? "your-strong-secret-key-here-2026";
_issuer = configuration["Jwt:Issuer"] ?? "AssetManager";
_audience = configuration["Jwt:Audience"] ?? "AssetManager";
}
public string GenerateToken(string userId, string userName, string email)
{
var claims = new[]
{
new Claim(JwtRegisteredClaimNames.Sub, userId),
new Claim(JwtRegisteredClaimNames.Name, userName),
new Claim(JwtRegisteredClaimNames.Email, email),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
};
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_secretKey));
var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
issuer: _issuer,
audience: _audience,
claims: claims,
expires: DateTime.Now.AddHours(24),
signingCredentials: credentials);
return new JwtSecurityTokenHandler().WriteToken(token);
}
}