此问题主要是由于Docker容器中的时间不同步,导致身份验证令牌过期,因此需要在Dockerfile中添加以下语句以同步时间:
RUN apt-get update && apt-get install -y tzdata
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
dpkg-reconfigure --frontend noninteractive tzdata
此外,可以通过配置ASP.NET Core Identity的“TokenLifespan”属性来延长令牌的有效期。以下是一个示例:
services.AddAuthentication()
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ClockSkew = TimeSpan.Zero,
// 令牌有效期为一周
RequireExpirationTime = true,
ValidateLifetime = true,
LifetimeValidator = (DateTime? notBefore, DateTime? expires, SecurityToken token, TokenValidationParameters parameters) =>
{
return expires >= DateTime.UtcNow.AddDays(7);
}
};
});
services.Configure(options =>
{
options.TokenLifespan = TimeSpan.FromDays(7);
});