Falcon.SugarApi/Falcon.SugarApi/ClaimTicket/UserTicket.cs
2024-04-30 15:54:01 +08:00

78 lines
2.3 KiB
C#

using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
namespace Falcon.SugarApi.ClaimTicket
{
/// <summary>
/// 用户票据
/// </summary>
public class UserTicket
{
/// <summary>
/// 存储用户声明
/// </summary>
public List<Claim> Claims { get; set; } = new List<Claim>();
/// <summary>
/// 构造空白票据
/// </summary>
public UserTicket() { }
/// <summary>
/// 通过声明列表构造票据
/// </summary>
/// <param name="claims">声称</param>
public UserTicket(IEnumerable<Claim> claims) {
this.Claims = claims.ToList();
}
/// <summary>
/// 通过声明列表构造票据
/// </summary>
/// <param name="claims">声称</param>
public UserTicket(params Claim[] claims) : this(claims.ToList()) { }
/// <summary>
/// 增加用户声明
/// </summary>
/// <param name="claims"></param>
public void AddClaims(params Claim[] claims) {
if(claims.Length == 0) {
return;
}
foreach(var c in claims) {
var f = this.Claims.Find(a => a.Type == c.Type);
if(f != null) {
this.Claims.Remove(f);
}
this.Claims.Add(c);
}
}
/// <summary>
/// 为用户添加键和值
/// </summary>
/// <param name="key">键</param>
/// <param name="val">值</param>
public void AddClaim(string key,string val) {
if(key.IsNullOrEmpty()) {
return;
}
if(val.IsNullOrEmpty()) {
var c = this.Claims.Find(a => a.Type == key);
if(c != null) {
this.Claims.Remove(c);
}
}
this.AddClaims(new Claim(key,val));
}
/// <summary>
/// 获取用户声明的值
/// </summary>
/// <param name="key">声明键</param>
/// <returns>值</returns>
public string? GetValue(string key) {
var c = this.Claims.Find(a => a.Type == key);
return c == null ? string.Empty : c.Value;
}
}
}