78 lines
2.3 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|