网站首页 网站源码
using Dpz.Core.Public.Entity.Auth;
using MongoDB.Bson;
namespace Dpz.Core.Auth.Models;
public class PageTokenModel
{
public string Id { get; set; } = string.Empty;
/// <summary>
/// 应用程序标识符(对应客户端 ClientId)
/// </summary>
public string ApplicationId { get; set; } = string.Empty;
/// <summary>
/// 应用程序名称
/// </summary>
public string? ApplicationName { get; set; }
/// <summary>
/// 授权标识符(如授权码流程中的 AuthorizationId)
/// </summary>
public string AuthorizationId { get; set; } = string.Empty;
/// <summary>
/// 并发标识,用于乐观并发控制
/// </summary>
public string? ConcurrencyToken { get; set; }
/// <summary>
/// 创建时间(UTC)
/// </summary>
public DateTime? CreationDate { get; set; }
/// <summary>
/// 过期时间(UTC)
/// </summary>
public DateTime? ExpirationDate { get; set; }
/// <summary>
/// 令牌负载(仅用于引用令牌),可能已加密
/// </summary>
public string? Payload { get; set; }
/// <summary>
/// 附加属性(如自定义元数据、扩展字段)
/// </summary>
public BsonDocument? Properties { get; set; }
/// <summary>
/// 兑换时间(UTC),表示令牌是否已被使用(如授权码)
/// </summary>
public DateTime? RedemptionDate { get; set; }
/// <summary>
/// 引用标识符,仅用于引用令牌(Reference Token),可能已加密或哈希
/// </summary>
public string? ReferenceId { get; set; }
/// <summary>
/// 令牌状态(如 valid、revoked、expired)
/// </summary>
public string? Status { get; set; }
/// <summary>
/// 令牌状态名称
/// </summary>
public string StatusName => AuthHelper.GetTokenStatusDescription(Status);
/// <summary>
/// 主体标识(通常是用户的 sub 声明)
/// </summary>
public string? Subject { get; set; }
/// <summary>
/// 令牌类型(access_token、refresh_token、authorization_code 等)
/// </summary>
public string? Type { get; set; }
/// <summary>
/// 令牌类型名称
/// </summary>
public string TypeName => AuthHelper.GetTokenTypeDescription(Type);
}
上述代码定义了一个名为 PageTokenModel 的 C# 类,主要用于表示与身份验证和授权相关的令牌信息。这个类包含了多个属性,旨在存储与令牌相关的各种数据。以下是对每个属性的详细解释:
Id: 令牌的唯一标识符,通常是一个字符串。
ApplicationId: 应用程序的标识符,通常对应于客户端的 ClientId,用于识别发起请求的应用程序。
ApplicationName: 应用程序的名称,可能是可选的(string?),用于提供更具描述性的应用程序信息。
AuthorizationId: 授权标识符,通常在授权码流程中使用,表示特定的授权请求。
ConcurrencyToken: 用于乐观并发控制的标识符,确保在并发环境中对令牌的操作是安全的。
CreationDate: 令牌的创建时间,使用 UTC 时间格式。
ExpirationDate: 令牌的过期时间,使用 UTC 时间格式,指示令牌何时失效。
Payload: 令牌的负载,通常用于引用令牌,可能包含加密的数据。
Properties: 附加属性,使用 BsonDocument 类型,可以存储自定义元数据或扩展字段,提供灵活性。
RedemptionDate: 兑换时间,表示令牌是否已被使用,通常在授权码流程中使用。
ReferenceId: 引用标识符,仅用于引用令牌,可能已加密或哈希,用于标识令牌的引用。
Status: 令牌的状态,可能的值包括 valid(有效)、revoked(撤销)和 expired(过期)。
StatusName: 通过调用 AuthHelper.GetTokenStatusDescription(Status) 方法获取令牌状态的描述名称,提供更易读的状态信息。
Subject: 主体标识,通常是用户的 sub 声明,表示与令牌相关的用户或主体。
Type: 令牌的类型,例如 access_token、refresh_token 或 authorization_code 等。
TypeName: 通过调用 AuthHelper.GetTokenTypeDescription(Type) 方法获取令牌类型的描述名称,提供更易读的类型信息。
PageTokenModel 类的主要功能是封装与身份验证和授权相关的令牌信息,提供了多种属性来存储令牌的状态、类型、创建和过期时间等信息。这使得在处理身份验证和授权时,可以方便地管理和使用这些令牌。该类还利用了 MongoDB 的 BsonDocument 类型来支持灵活的属性存储。
