Web:访问令牌 10 分钟;活跃时自动轮换刷新令牌;连续无操作 30 分钟后清除登录并跳转登录页。 App:会话窗口 3 天;打开 App、恢复前台或请求接口时自动刷新并重新顺延 3 天。 普通登录和 SSO 使用同一策略。 刷新令牌只以 SHA-256 摘要入库,每次刷新都会轮换,旧令牌无法再次使用;退出登录会吊销刷新令牌。 网络临时故障不会误清登录状态,多标签页同时刷新也做了竞争处理。
23 lines
719 B
C#
23 lines
719 B
C#
namespace Jiaowu.Api.Domain.Identity;
|
|
|
|
public enum AuthenticationClientType
|
|
{
|
|
Web = 0,
|
|
App = 1
|
|
}
|
|
|
|
public sealed class RefreshSession
|
|
{
|
|
public Guid Id { get; set; } = Guid.NewGuid();
|
|
public Guid UserId { get; set; }
|
|
public ApplicationUser? User { get; set; }
|
|
public required string TokenHash { get; set; }
|
|
public AuthenticationClientType ClientType { get; set; }
|
|
public required string SecurityStamp { get; set; }
|
|
public DateTime ExpiresAt { get; set; }
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
public DateTime LastRefreshedAt { get; set; } = DateTime.UtcNow;
|
|
public DateTime? RevokedAt { get; set; }
|
|
public Guid? ReplacedBySessionId { get; set; }
|
|
}
|