Skip to content

Commit

Permalink
添加租户支持
Browse files Browse the repository at this point in the history
  • Loading branch information
UtilCore committed Sep 10, 2023
1 parent 766b0b4 commit e89dc67
Show file tree
Hide file tree
Showing 236 changed files with 5,097 additions and 1,596 deletions.
95 changes: 75 additions & 20 deletions Util.sln

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion build/version.props
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<PropertyGroup>
<VersionMajor>7</VersionMajor>
<VersionMinor>1</VersionMinor>
<VersionPatch>20</VersionPatch>
<VersionPatch>22</VersionPatch>
<VersionPrefix>$(VersionMajor).$(VersionMinor).$(VersionPatch)</VersionPrefix>
<VersionSuffix></VersionSuffix>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/Util.Aop.AspectCore/IgnoreAttribute.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
/// <summary>
/// 忽略拦截
/// </summary>
public class IgnoreAttribute : AspectCore.DynamicProxy.NonAspectAttribute {
public class IgnoreAttribute : NonAspectAttribute {
}
56 changes: 56 additions & 0 deletions src/Util.AspNetCore/Helpers/Web.cs
Original file line number Diff line number Diff line change
Expand Up @@ -343,4 +343,60 @@ public static async Task DownloadAsync( byte[] bytes, string fileName, Encoding
}

#endregion

#region GetCookie(获取Cookie)

/// <summary>
/// 获取Cookie
/// </summary>
/// <param name="key">cookie键名</param>
public static string GetCookie( string key ) {
return Request?.Cookies[key];
}

#endregion

#region SetCookie(设置Cookie)

/// <summary>
/// 设置Cookie
/// </summary>
/// <param name="key">cookie键名</param>
/// <param name="value">值</param>
public static void SetCookie( string key, string value ) {
Response?.Cookies.Append( key, value );
}

/// <summary>
/// 设置Cookie
/// </summary>
/// <param name="key">cookie键名</param>
/// <param name="value">值</param>
/// <param name="options">Cookie配置</param>
public static void SetCookie( string key,string value,CookieOptions options ) {
Response?.Cookies.Append( key, value, options );
}

#endregion

#region RemoveCookie(移除Cookie)

/// <summary>
/// 移除Cookie
/// </summary>
/// <param name="key">cookie键名</param>
public static void RemoveCookie( string key ) {
Response?.Cookies.Delete( key );
}

/// <summary>
/// 移除Cookie
/// </summary>
/// <param name="key">cookie键名</param>
/// <param name="options">Cookie配置</param>
public static void RemoveCookie( string key, CookieOptions options ) {
Response?.Cookies.Delete( key, options );
}

#endregion
}
71 changes: 70 additions & 1 deletion src/Util.AspNetCore/Http/HttpRequest.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Text.Encodings.Web;
using Microsoft.Net.Http.Headers;
using System.Text.Encodings.Web;
using System.Text.Unicode;
using Util.Helpers;
using Util.SystemTextJson;
Expand Down Expand Up @@ -61,6 +62,7 @@ public HttpRequest( IHttpClientFactory httpClientFactory, HttpClient httpClient,
HeaderParams = new Dictionary<string, string>();
QueryParams = new Dictionary<string, string>();
Params = new Dictionary<string, object>();
Cookies = new Dictionary<string, string>();
HttpContentType = Util.Http.HttpContentType.Json.Description();
CharacterEncoding = System.Text.Encoding.UTF8;
}
Expand Down Expand Up @@ -94,6 +96,10 @@ public HttpRequest( IHttpClientFactory httpClientFactory, HttpClient httpClient,
/// </summary>
protected IDictionary<string, string> HeaderParams { get; }
/// <summary>
/// Cookie参数集合
/// </summary>
protected IDictionary<string, string> Cookies { get; }
/// <summary>
/// 查询字符串参数集合
/// </summary>
protected IDictionary<string, string> QueryParams { get; }
Expand All @@ -106,6 +112,10 @@ public HttpRequest( IHttpClientFactory httpClientFactory, HttpClient httpClient,
/// </summary>
protected object Param { get; private set; }
/// <summary>
/// 是否自动携带cookie
/// </summary>
protected bool? IsUseCookies { get; private set; }
/// <summary>
/// 发送前操作
/// </summary>
protected Func<HttpRequestMessage, bool> SendBeforeAction { get; private set; }
Expand Down Expand Up @@ -299,6 +309,39 @@ public IHttpRequest<TResult> QueryString( object queryString ) {

#endregion

#region UseCookies(设置是否自动携带cookie)

/// <inheritdoc />
public IHttpRequest<TResult> UseCookies( bool isUseCookies = true ) {
IsUseCookies = isUseCookies;
return this;
}

#endregion

#region Cookie(设置Cookie)

/// <inheritdoc />
public IHttpRequest<TResult> Cookie( string key, string value ) {
if ( key.IsEmpty() )
return this;
if ( Cookies.ContainsKey( key ) )
Cookies.Remove( key );
Cookies.Add( key, value );
return this;
}

/// <inheritdoc />
public IHttpRequest<TResult> Cookie( IDictionary<string, string> cookies ) {
if ( Cookies == null )
return this;
foreach ( var cookie in Cookies )
Cookie( cookie.Key, cookie.Value );
return this;
}

#endregion

#region Content(添加内容参数)

/// <inheritdoc />
Expand Down Expand Up @@ -439,6 +482,7 @@ public IHttpRequest<TResult> OnComplete( Action<HttpResponseMessage, object> act
/// </summary>
protected virtual HttpRequestMessage CreateMessage() {
var message = new HttpRequestMessage( _httpMethod, GetUrl( _url ) );
AddCookies();
AddHeaders( message );
message.Content = CreateHttpContent();
return message;
Expand All @@ -452,6 +496,18 @@ protected virtual string GetUrl( string url ) {
return QueryHelpers.AddQueryString( url, QueryParams );
}

/// <summary>
/// 添加Cookie
/// </summary>
protected virtual void AddCookies() {
if ( Cookies.Count == 0 )
return;
var cookieValues = new List<CookieHeaderValue>();
foreach ( var cookie in Cookies )
cookieValues.Add( new CookieHeaderValue( cookie.Key, cookie.Value ) );
Header( "Cookie", cookieValues.Select( t => t.ToString() ).Join() );
}

/// <summary>
/// 添加请求头
/// </summary>
Expand Down Expand Up @@ -582,6 +638,7 @@ protected HttpClient GetClient() {
return _httpClient;
var clientHandler = CreateHttpClientHandler();
InitHttpClientHandler( clientHandler );
InitUseCookies( clientHandler );
return _httpClientName.IsEmpty() ? _httpClientFactory.CreateClient() : _httpClientFactory.CreateClient( _httpClientName );
}

Expand Down Expand Up @@ -624,6 +681,18 @@ protected virtual void InitCertificate( HttpClientHandler handler ) {

#endregion

#region InitUseCookies(初始化是否携带Cookie)

/// <summary>
/// 初始化是否携带Cookie
/// </summary>
protected virtual void InitUseCookies( HttpClientHandler handler ) {
if ( IsUseCookies == null )
handler.UseCookies = false;
}

#endregion

#region InitHttpClient(初始化Http客户端)

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using Util.Helpers;
using Util.Http;
using Util.Sessions;
using Util.SystemTextJson;

namespace Util.Infrastructure;
Expand Down Expand Up @@ -33,7 +32,6 @@ public Action Register( ServiceContext serviceContext ) {
RegisterHttpContextAccessor( services );
services.AddHttpClient();
RegisterServiceLocator();
RegisterSession( services );
RegisterHttpClient( services );
ConfigJsonOptions( services );
} );
Expand All @@ -56,13 +54,6 @@ private void RegisterServiceLocator() {
Ioc.SetServiceProviderAction( () => Web.ServiceProvider );
}

/// <summary>
/// 注册用户会话
/// </summary>
private void RegisterSession( IServiceCollection services ) {
services.TryAddSingleton<Util.Sessions.ISession, UserSession>();
}

/// <summary>
/// 注册Http客户端
/// </summary>
Expand Down
21 changes: 11 additions & 10 deletions src/Util.AspNetCore/Sessions/UserSession.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using Util.Helpers;
using Util.Security;

namespace Util.Sessions;

Expand All @@ -13,22 +12,24 @@ public class UserSession : ISession {
public static readonly ISession Null = NullSession.Instance;

/// <summary>
/// 用户会话
/// 用户会话实例
/// </summary>
public static readonly ISession Instance = new UserSession();

/// <summary>
/// 是否认证
/// </summary>
public bool IsAuthenticated => Web.Identity.IsAuthenticated;
/// <inheritdoc />
public virtual IServiceProvider ServiceProvider => Web.ServiceProvider;

/// <summary>
/// 用户标识
/// </summary>
public string UserId {
/// <inheritdoc />
public virtual bool IsAuthenticated => Web.Identity.IsAuthenticated;

/// <inheritdoc />
public virtual string UserId {
get {
var result = Web.Identity.GetValue( ClaimTypes.UserId );
return result.IsEmpty() ? Web.Identity.GetValue( System.Security.Claims.ClaimTypes.NameIdentifier ) : result;
}
}

/// <inheritdoc />
public virtual string TenantId => Web.Identity.GetValue( ClaimTypes.TenantId );
}
3 changes: 2 additions & 1 deletion src/Util.AspNetCore/Usings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,5 @@
global using Microsoft.AspNetCore.Mvc.Filters;
global using Microsoft.AspNetCore.DataProtection;
global using Microsoft.AspNetCore.Builder;
global using Util.Dependency;
global using Util.Dependency;
global using Util.Security;
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="EasyCaching.InMemory" Version="1.9.0" />
<PackageReference Include="EasyCaching.Redis" Version="1.9.0" />
<PackageReference Include="EasyCaching.Serialization.SystemTextJson" Version="1.9.0" />
<PackageReference Include="EasyCaching.InMemory" Version="1.9.1" />
<PackageReference Include="EasyCaching.Redis" Version="1.9.1" />
<PackageReference Include="EasyCaching.Serialization.SystemTextJson" Version="1.9.1" />
</ItemGroup>

<ItemGroup>
Expand Down
Loading

0 comments on commit e89dc67

Please sign in to comment.