udpate
This commit is contained in:
@@ -1,6 +1,4 @@
|
||||
#nullable enable
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text.Json;
|
||||
using Microsoft.Extensions.Caching.Distributed;
|
||||
using SimApi.Communications;
|
||||
@@ -33,7 +31,7 @@ public class SimApiAuth(IDistributedCache cache)
|
||||
public SimApiLoginItem? GetLogin(string token)
|
||||
{
|
||||
var login = cache.GetString(token);
|
||||
return login != null ? JsonSerializer.Deserialize<SimApiLoginItem>(login) : default;
|
||||
return login != null ? JsonSerializer.Deserialize<SimApiLoginItem>(login) : null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace SimApi.Helpers;
|
||||
|
||||
public class SimApiCache(IDistributedCache cache)
|
||||
{
|
||||
private const string Prefix = "SimApi:Cache";
|
||||
private const string Prefix = "SimApi:Cache:";
|
||||
|
||||
public void Set(string key, object value, DistributedCacheEntryOptions? options = null)
|
||||
{
|
||||
|
||||
@@ -14,7 +14,7 @@ public class SimApiJobWebAuth(string user, string pass) : IDashboardAuthorizatio
|
||||
var authHeader = httpContext.Request.Headers["Authorization"].FirstOrDefault();
|
||||
if (authHeader != null && authHeader.StartsWith("Basic "))
|
||||
{
|
||||
var encodedUsernamePassword = authHeader.Split(' ', 2, StringSplitOptions.RemoveEmptyEntries)[1]?.Trim();
|
||||
var encodedUsernamePassword = authHeader.Split(' ', 2, StringSplitOptions.RemoveEmptyEntries)[1].Trim();
|
||||
var decodedUsernamePassword = Encoding.UTF8.GetString(Convert.FromBase64String(encodedUsernamePassword));
|
||||
var username = decodedUsernamePassword.Split(':', 2)[0];
|
||||
var password = decodedUsernamePassword.Split(':', 2)[1];
|
||||
|
||||
+35
-1
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
@@ -7,6 +8,7 @@ using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Text.Unicode;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace SimApi.Helpers;
|
||||
|
||||
@@ -22,6 +24,7 @@ public static class SimApiUtil
|
||||
/// </summary>
|
||||
public static JsonSerializerOptions JsonOption => new()
|
||||
{
|
||||
ReferenceHandler = ReferenceHandler.Preserve,
|
||||
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All),
|
||||
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
|
||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull
|
||||
@@ -62,12 +65,43 @@ public static class SimApiUtil
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// sha1加密字符串
|
||||
/// </summary>
|
||||
/// <param name="source">源字符串</param>
|
||||
/// <param name="mode">加密结果"x2"结果为32位,"x3"结果为48位,"x4"结果为64位</param>
|
||||
/// <returns></returns>
|
||||
public static string Sha1(string source, string mode = "x2")
|
||||
{
|
||||
var hash = SHA1.HashData(Encoding.UTF8.GetBytes(source));
|
||||
var sb = new StringBuilder(hash.Length * 2);
|
||||
foreach (var b in hash)
|
||||
{
|
||||
sb.Append(b.ToString(mode));
|
||||
}
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将XML字符串序列化为对象
|
||||
/// </summary>
|
||||
/// <param name="source"></param>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <returns></returns>
|
||||
public static T XmlDeserialize<T>(string source)
|
||||
{
|
||||
var xmlConvertor = new XmlSerializer(typeof(T));
|
||||
using var reader = new StringReader(source);
|
||||
return (T)xmlConvertor.Deserialize(reader)!;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将对象序列化成JSON (控制台输出中文不会被编码)
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
/// <returns></returns>
|
||||
public static string Json(object obj)
|
||||
public static string Json(object? obj)
|
||||
{
|
||||
return JsonSerializer.Serialize(obj, JsonOption);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user