c# - C#如何通过代码生成在接下来的5分钟内有效的令牌
问题描述
在这里,我有生成 24 小时有效令牌的代码,但我正在寻找一个生成令牌编号的逻辑将在 5 分钟内有效。我搜索谷歌但发现不知道。所以请有人分享任何想法将不胜感激。谢谢
public static string GenerateToken()
{
int month = DateTime.Now.Month;
int day = DateTime.Now.Day;
string token = ((day * 100 + month) * 700 + day * 13).ToString();
return token;
}
解决方案
如果你使用身份。你可以实现这个
using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
...
public class SomeTokenAuthenticationService : IAuthenticateService
{
private readonly TokenManagement _tokenManagement;
public SomeTokenAuthenticationService(IOptions<TokenManagement> tokenManagement)
{
_tokenManagement = tokenManagement.Value;
}
public string GenerateToken(ClaimsIdentity identity){
var now = DateTime.UtcNow;
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_tokenManagement.Secret));
var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var jwtToken = new JwtSecurityToken(
_tokenManagement.Issuer,
_tokenManagement.Audience,
notBefore:now,
claims:identity.Claims,
expires: DateTime.Now.AddMinutes(_tokenManagement.AccessExpiration),
signingCredentials: credentials
);
var tokenjwt = new JwtSecurityTokenHandler().WriteToken(jwtToken);
return $"Bearer {tokenjwt}";
}}
您还需要在 appsettings.Development.json 中添加一个选项
"tokenManagement": {
"secret": "Secret : in the 1eujsjjdjodjdjodfjodjojofjfdjdj 1234567891",
"issuer": "test.user",
"audience": "SampleAudience",
"accessExpiration": 30,//minutes
"refreshExpiration": 60
}