添加项目文件。
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IdentityModel.Tokens.Jwt;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using System.Security.Cryptography;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ZhaoXi._001.NET5Demo.Practice.WebApi.Utility.Jwt
|
||||
{
|
||||
/// <summary>
|
||||
/// 非对称可逆加密
|
||||
/// </summary>
|
||||
public class CustomRSSJWTervice : ICustomJWTService
|
||||
|
||||
{
|
||||
#region Option注入
|
||||
private readonly JWTTokenOptions _JWTTokenOptions;
|
||||
public CustomRSSJWTervice(IOptionsMonitor<JWTTokenOptions> jwtTokenOptions)
|
||||
{
|
||||
this._JWTTokenOptions = jwtTokenOptions.CurrentValue;
|
||||
}
|
||||
#endregion
|
||||
|
||||
public string GetToken(string userName, string password)
|
||||
{
|
||||
#region 使用加密解密Key 非对称
|
||||
string keyDir = Directory.GetCurrentDirectory();
|
||||
if (RSAHelper.TryGetKeyParameters(keyDir, true, out RSAParameters keyParams) == false)
|
||||
{
|
||||
keyParams = RSAHelper.GenerateAndSaveKey(keyDir);
|
||||
}
|
||||
#endregion
|
||||
|
||||
//string jtiCustom = Guid.NewGuid().ToString();//用来标识 Token
|
||||
Claim[] claims = new[]
|
||||
{
|
||||
new Claim(ClaimTypes.Name, userName),
|
||||
new Claim(ClaimTypes.Role,"admin"),
|
||||
new Claim("password",password)
|
||||
};
|
||||
|
||||
SigningCredentials credentials = new SigningCredentials(new RsaSecurityKey(keyParams), SecurityAlgorithms.RsaSha256Signature);
|
||||
|
||||
var token = new JwtSecurityToken(
|
||||
issuer: this._JWTTokenOptions.Issuer,
|
||||
audience: this._JWTTokenOptions.Audience,
|
||||
claims: claims,
|
||||
expires: DateTime.Now.AddMinutes(60),//5分钟有效期
|
||||
signingCredentials: credentials);
|
||||
|
||||
var handler = new JwtSecurityTokenHandler();
|
||||
string tokenString = handler.WriteToken(token);
|
||||
return tokenString;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user