41 lines
922 B
C#
41 lines
922 B
C#
using System.Security.Claims;
|
||
|
||
namespace MAX.Framework.Security;
|
||
|
||
/// <summary>
|
||
/// 令牌生成结果
|
||
/// </summary>
|
||
public class TokenResult
|
||
{
|
||
/// <summary>
|
||
/// 令牌类型(Bearer)
|
||
/// </summary>
|
||
public string TokenType { get; set; } = "Bearer";
|
||
|
||
/// <summary>
|
||
/// 访问令牌
|
||
/// </summary>
|
||
public string Token { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 有效时间(分钟)
|
||
/// </summary>
|
||
public uint ExpiresInMinutes { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 数据库令牌服务:生成与校验访问令牌。
|
||
/// </summary>
|
||
public interface ITokenService
|
||
{
|
||
/// <summary>
|
||
/// 根据声明集合生成访问令牌
|
||
/// </summary>
|
||
TokenResult CreateToken(IEnumerable<Claim> claims, string? loginIp = null, string? deviceId = null, string? deviceName = null);
|
||
|
||
/// <summary>
|
||
/// 校验令牌,校验失败返回 null
|
||
/// </summary>
|
||
Task<ClaimsPrincipal?> ValidateTokenAsync(string token);
|
||
}
|