js-cookie中如何获取过期时间
时间: 2023-08-09 07:05:30 浏览: 182
在js-cookie中,可以通过传递一个可选的options对象来设置cookie的选项,其中包括expires选项来设置cookie的过期时间。如果没有设置expires选项,则cookie将成为一个会话cookie,即在浏览器关闭时过期。
要获取cookie的过期时间,可以使用js-cookie的get方法来获取cookie的值和选项对象,然后从选项对象中提取expires属性的值。下面是一个示例代码:
```javascript
var cookieValue = Cookies.get('myCookie');
var cookieOptions = Cookies.get('myCookie', { raw: true });
var expires = cookieOptions.expires;
console.log('Cookie value: ' + cookieValue);
console.log('Cookie expires: ' + expires);
```
在这个示例中,我们首先使用get方法获取cookie的值和选项对象,然后从选项对象中提取expires属性的值,并将其打印到控制台上。请注意,我们使用了`{ raw: true }`选项来获取原始cookie字符串,而不是解析后的对象。
相关问题
js-cookie设置token过期时间_详解ASP.NET Core Web Api之JWT刷新Token_实用技巧
好的,我了解您的问题。关于js-cookie设置token过期时间,我们可以通过设置cookie的expires属性来实现。示例代码如下:
```
// 设置cookie过期时间为1小时
Cookies.set('token', 'your_token', { expires: 1/24 });
// 获取cookie过期时间
var expires = new Date(Cookies.get('token')).toUTCString();
console.log('token过期时间:' + expires);
```
另外,关于ASP.NET Core Web Api之JWT刷新Token,我们可以通过设置Token过期时间,并在Token过期前刷新Token来实现。示例代码如下:
```
// 在Startup.cs中设置Token认证
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration["Jwt:Issuer"],
ValidAudience = Configuration["Jwt:Issuer"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
};
options.Events = new JwtBearerEvents
{
OnAuthenticationFailed = context =>
{
if (context.Exception.GetType() == typeof(SecurityTokenExpiredException))
{
context.Response.Headers.Add("Token-Expired", "true");
}
return Task.CompletedTask;
}
};
});
// 在Token过期前刷新Token
[HttpPost("refresh-token")]
public async Task<IActionResult> RefreshToken([FromBody] TokenRequestModel model)
{
var principal = GetPrincipalFromExpiredToken(model.Token);
var username = principal.Identity.Name; //retrieve the username of the person we are refreshing
var user = await _userManager.FindByNameAsync(username);
if (user == null || user.RefreshToken != model.RefreshToken || user.RefreshTokenExpiryTime <= DateTime.UtcNow)
{
return BadRequest("Invalid client request");
}
var newJwtToken = GenerateJwtToken(user);
var newRefreshToken = GenerateRefreshToken();
user.RefreshToken = newRefreshToken;
await _userManager.UpdateAsync(user);
return new ObjectResult(new TokenResponseModel
{
Token = newJwtToken,
RefreshToken = newRefreshToken
});
}
// 获取Token中的Principal
private ClaimsPrincipal GetPrincipalFromExpiredToken(string token)
{
var tokenValidationParameters = new TokenValidationParameters
{
ValidateAudience = false,
ValidateIssuer = false,
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"])),
ValidateLifetime = false //here we are saying that we don't care about the token's expiration date
};
var tokenHandler = new JwtSecurityTokenHandler();
var principal = tokenHandler.ValidateToken(token, tokenValidationParameters, out var securityToken);
var jwtSecurityToken = securityToken as JwtSecurityToken;
if (jwtSecurityToken == null || !jwtSecurityToken.Header.Alg.Equals(SecurityAlgorithms.HmacSha256, StringComparison.InvariantCultureIgnoreCase))
throw new SecurityTokenException("Invalid token");
return principal;
}
// 生成新的JWT Token
private string GenerateJwtToken(User user)
{
var claims = new List<Claim>
{
new Claim(ClaimTypes.Name, user.UserName),
new Claim("userId", user.Id.ToString())
};
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var expires = DateTime.UtcNow.AddMinutes(Convert.ToDouble(Configuration["Jwt:ExpireMinutes"]));
var token = new JwtSecurityToken(
Configuration["Jwt:Issuer"],
Configuration["Jwt:Issuer"],
claims,
expires: expires,
signingCredentials: creds
);
return new JwtSecurityTokenHandler().WriteToken(token);
}
// 生成新的Refresh Token
private string GenerateRefreshToken()
{
var randomNumber = new byte[32];
using (var rng = RandomNumberGenerator.Create())
{
rng.GetBytes(randomNumber);
return Convert.ToBase64String(randomNumber);
}
}
```
希望这些代码对您有所帮助!
js-cookie的cookie默认过期时间是多久
js-cookie默认的过期时间是在浏览器会话结束时过期,也就是说,当用户关闭浏览器时Cookie会被删除。这个过期时间是由浏览器控制的,不同的浏览器可能有不同的行为。如果你需要更精细的控制Cookie的过期时间,可以使用js-cookie提供的expires、max-age和expires属性来设置Cookie的过期时间。其中,expires属性可以设置具体的过期时间,max-age属性可以设置Cookie的最大存活时间,expires属性和max-age属性都可以用来控制Cookie的过期时间。
阅读全文