Make refresh token also be a JWT as requested
This commit is contained in:
@@ -37,6 +37,14 @@ public class TokenService(ImgBoardContext context, IConfiguration config, UserMa
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async Task<string> GenerateJwtToken(User user)
|
public async Task<string> GenerateJwtToken(User user)
|
||||||
|
{
|
||||||
|
return await GenerateJwtToken(
|
||||||
|
user,
|
||||||
|
DateTime.Now.AddMinutes(Convert.ToDouble(config["Jwt:DurationInMinutes"]))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<string> GenerateJwtToken(User user, DateTime dateExpire)
|
||||||
{
|
{
|
||||||
var roles = await userManager.GetRolesAsync(user);
|
var roles = await userManager.GetRolesAsync(user);
|
||||||
var claims = new List<Claim>
|
var claims = new List<Claim>
|
||||||
@@ -54,7 +62,7 @@ public class TokenService(ImgBoardContext context, IConfiguration config, UserMa
|
|||||||
issuer: config["Jwt:Issuer"],
|
issuer: config["Jwt:Issuer"],
|
||||||
audience: config["Jwt:Audience"],
|
audience: config["Jwt:Audience"],
|
||||||
claims: claims,
|
claims: claims,
|
||||||
expires: DateTime.Now.AddMinutes(Convert.ToDouble(config["Jwt:DurationInMinutes"])),
|
expires: dateExpire,
|
||||||
signingCredentials: creds);
|
signingCredentials: creds);
|
||||||
|
|
||||||
return new JwtSecurityTokenHandler().WriteToken(token);
|
return new JwtSecurityTokenHandler().WriteToken(token);
|
||||||
@@ -62,10 +70,12 @@ public class TokenService(ImgBoardContext context, IConfiguration config, UserMa
|
|||||||
|
|
||||||
public async Task<string> GenerateRefreshToken(User user)
|
public async Task<string> GenerateRefreshToken(User user)
|
||||||
{
|
{
|
||||||
|
var dateExpire = DateTime.Now.AddDays(30);
|
||||||
|
var jwtToken = await GenerateJwtToken(user, dateExpire);
|
||||||
var token = new RefreshToken
|
var token = new RefreshToken
|
||||||
{
|
{
|
||||||
Expires = DateTime.Now.AddDays(30),
|
Expires = dateExpire,
|
||||||
Token = Guid.NewGuid().ToString(),
|
Token = jwtToken,
|
||||||
User = user
|
User = user
|
||||||
};
|
};
|
||||||
await context.RefreshTokens.AddAsync(token);
|
await context.RefreshTokens.AddAsync(token);
|
||||||
|
|||||||
Reference in New Issue
Block a user