53 lines
2.0 KiB
C#
53 lines
2.0 KiB
C#
using System;
|
|
using Falcon.Extend;
|
|
using Microsoft.Extensions.Options;
|
|
|
|
namespace FAuth.Extensions.Decryptor
|
|
{
|
|
/// <summary>
|
|
/// 用户凭据实现
|
|
/// </summary>
|
|
public class UserTicketDryptor:IUserTicketDryptor
|
|
{
|
|
/// <summary>
|
|
/// 基础加密解密服务
|
|
/// </summary>
|
|
public ICryptoService CryptoService { get; set; }
|
|
/// <summary>
|
|
/// 用户凭据配置
|
|
/// </summary>
|
|
public UserTicketDecryptorOption Option { get; set; }
|
|
/// <summary>
|
|
/// 基础Json序列化提供器
|
|
/// </summary>
|
|
public IJsonProvider JsonProvider { get; set; }
|
|
|
|
/// <summary>
|
|
/// 构造用户凭据实现
|
|
/// </summary>
|
|
/// <param name="s">基础加密解密提供器</param>
|
|
/// <param name="option">凭据选项</param>
|
|
/// <param name="json">Json序列化器</param>
|
|
public UserTicketDryptor(ICryptoService s,IOptions<UserTicketDecryptorOption> option,IJsonProvider json) {
|
|
this.CryptoService = s ?? throw new ArgumentNullException(nameof(s));
|
|
this.Option = option?.Value ?? throw new ArgumentNullException(nameof(option));
|
|
this.JsonProvider = json ?? throw new ArgumentNullException(nameof(json));
|
|
}
|
|
/// <summary>
|
|
/// 通过用户凭据获得用户信息
|
|
/// </summary>
|
|
/// <param name="content">用户凭据</param>
|
|
/// <returns>用户信息</returns>
|
|
public UserTicketModel Decrypt(string content) =>
|
|
this.JsonProvider.GetObj<UserTicketModel>(this.CryptoService.Decrypt(content,this.Option.Key));
|
|
|
|
/// <summary>
|
|
/// 通过用户信息生成用户凭据
|
|
/// </summary>
|
|
/// <param name="user">用户信息</param>
|
|
/// <returns>用户凭据</returns>
|
|
public string Encrypt(UserTicketModel user) =>
|
|
this.CryptoService.Encrypt(this.JsonProvider.GetJson(user),Option.Key);
|
|
}
|
|
}
|