UserManager新增分部类,定义访问令牌,用于定时任务解析当前登录用户信息

This commit is contained in:
alex
2023-08-04 12:59:31 +08:00
parent 987d4ac652
commit a6ad99a5bc
6 changed files with 57 additions and 6 deletions

View File

@@ -3,13 +3,16 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Reflection; using System.Reflection;
using System.Security.Claims;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Aspose.Cells.Drawing; using Aspose.Cells.Drawing;
using JNPF; using JNPF;
using JNPF.Common.Contracts; using JNPF.Common.Contracts;
using JNPF.Common.Core.Manager;
using JNPF.Common.Enums; using JNPF.Common.Enums;
using JNPF.Common.Extension; using JNPF.Common.Extension;
using JNPF.DataEncryption;
using JNPF.DependencyInjection; using JNPF.DependencyInjection;
using JNPF.DynamicApiController; using JNPF.DynamicApiController;
using JNPF.Systems.Interfaces.System; using JNPF.Systems.Interfaces.System;
@@ -49,6 +52,19 @@ namespace Tnb.WarehouseMgr
} }
} }
} }
protected Task<ClaimsPrincipal> GetUserIdentity()
{
var claims = JWTEncryption.ReadJwtToken(UserManager.AsscessToken)?.Claims;
ClaimsIdentity toKen = new ClaimsIdentity();
foreach (Claim item in claims)
{
toKen.AddClaim(item);
}
var curUser = new ClaimsPrincipal(toKen);
return Task.FromResult(curUser);
}
/// <summary> /// <summary>
/// 判断最终目标库位是否可以放置当前载具 /// 判断最终目标库位是否可以放置当前载具
/// </summary> /// </summary>

View File

@@ -4,18 +4,24 @@ using System.Data;
using System.Data.Common; using System.Data.Common;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Net.Http;
using System.Security.Claims;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Transactions; using System.Transactions;
using Aop.Api.Domain; using Aop.Api.Domain;
using JNPF;
using JNPF.Common.Const;
using JNPF.Common.Core.Manager; using JNPF.Common.Core.Manager;
using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Dtos.VisualDev;
using JNPF.Common.Enums; using JNPF.Common.Enums;
using JNPF.Common.Extension; using JNPF.Common.Extension;
using JNPF.Common.Security; using JNPF.Common.Security;
using JNPF.DataEncryption;
using JNPF.FriendlyException; using JNPF.FriendlyException;
using JNPF.LinqBuilder; using JNPF.LinqBuilder;
using JNPF.Logging; using JNPF.Logging;
using JNPF.Systems.Entitys.Permission;
using JNPF.Systems.Interfaces.System; using JNPF.Systems.Interfaces.System;
using Mapster; using Mapster;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
@@ -61,6 +67,9 @@ namespace Tnb.WarehouseMgr
[HttpPost] [HttpPost]
public async Task KittingOutByAdd(CancellationTokenSource? cts = default) public async Task KittingOutByAdd(CancellationTokenSource? cts = default)
{ {
if (UserManager.AsscessToken.IsNullOrWhiteSpace()) return;
var curUser = await GetUserIdentity();
var curDb = _db.CopyNew(); var curDb = _db.CopyNew();
try try
{ {
@@ -114,8 +123,8 @@ namespace Tnb.WarehouseMgr
setSortingH.id = SnowflakeIdHelper.NextId(); setSortingH.id = SnowflakeIdHelper.NextId();
setSortingH.kittingout_id = ko.id; setSortingH.kittingout_id = ko.id;
setSortingH.seq = ko.seq; setSortingH.seq = ko.seq;
setSortingH.org_id = _userManager.User.OrganizeId; setSortingH.org_id = curUser.FindFirst(ClaimConst.CLAINMORGID)?.Value;
setSortingH.create_id = _userManager.UserId; setSortingH.create_id = curUser.FindFirst(ClaimConst.CLAINMUSERID)?.Value;
setSortingH.create_time = DateTime.Now; setSortingH.create_time = DateTime.Now;
await curDb.Insertable(setSortingH).ExecuteCommandAsync(); await curDb.Insertable(setSortingH).ExecuteCommandAsync();

View File

@@ -21,7 +21,7 @@ namespace JNPF.Common.Core.Manager;
/// <summary> /// <summary>
/// 用户管理 . /// 用户管理 .
/// </summary> /// </summary>
public class UserManager : IUserManager, IScoped public partial class UserManager : IUserManager, IScoped
{ {
/// <summary> /// <summary>
/// 用户表仓储. /// 用户表仓储.
@@ -76,7 +76,6 @@ public class UserManager : IUserManager, IScoped
public UserEntity User public UserEntity User
{ {
get => _repository.GetSingle(u => u.Id == UserId); get => _repository.GetSingle(u => u.Id == UserId);
} }
/// <summary> /// <summary>

View File

@@ -0,0 +1,27 @@
using JNPF.Common.Const;
using JNPF.Common.Enums;
using JNPF.Common.Extension;
using JNPF.Common.Manager;
using JNPF.Common.Models.Authorize;
using JNPF.Common.Models.User;
using JNPF.Common.Net;
using JNPF.Common.Security;
using JNPF.DataEncryption;
using JNPF.DependencyInjection;
using JNPF.Systems.Entitys.Entity.Permission;
using JNPF.Systems.Entitys.Permission;
using JNPF.Systems.Entitys.System;
using Mapster;
using Microsoft.AspNetCore.Http;
using SqlSugar;
using System.Security.Claims;
namespace JNPF.Common.Core.Manager;
/// <summary>
/// 用户管理 .
/// </summary>
public partial class UserManager
{
public static string AsscessToken { get; set; }
}

View File

@@ -41,7 +41,6 @@ using JNPF.Common.Core.Handlers;
using JNPF.Message.Interfaces.Message; using JNPF.Message.Interfaces.Message;
using JNPF.Extras.DatabaseAccessor.SqlSugar.Models; using JNPF.Extras.DatabaseAccessor.SqlSugar.Models;
using Aop.Api.Domain; using Aop.Api.Domain;
using Tnb.WarehouseMgr;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
@@ -606,6 +605,8 @@ public class OAuthService : IDynamicApiController, ITransient
{ ClaimConst.LOGINTYPE,input.login_type} { ClaimConst.LOGINTYPE,input.login_type}
}, tokenTimeout); }, tokenTimeout);
//modify by ly on 20230804
UserManager.AsscessToken = accessToken;
// 单点登录标识缓存 // 单点登录标识缓存
if (_oauthOptions.Enabled) _cacheManager.Set("OnlineTicket_" + input.online_ticket, options.ConfigId); if (_oauthOptions.Enabled) _cacheManager.Set("OnlineTicket_" + input.online_ticket, options.ConfigId);

View File

@@ -12,7 +12,6 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\common\Tnb.Common.Core\Tnb.Common.Core.csproj" /> <ProjectReference Include="..\..\common\Tnb.Common.Core\Tnb.Common.Core.csproj" />
<ProjectReference Include="..\..\message\Tnb.Message.Interfaces\Tnb.Message.Interfaces.csproj" /> <ProjectReference Include="..\..\message\Tnb.Message.Interfaces\Tnb.Message.Interfaces.csproj" />
<ProjectReference Include="..\..\WarehouseMgr\Tnb.WarehouseMgr\Tnb.WarehouseMgr.csproj" />
<ProjectReference Include="..\Tnb.Systems.Interfaces\Tnb.Systems.Interfaces.csproj" /> <ProjectReference Include="..\Tnb.Systems.Interfaces\Tnb.Systems.Interfaces.csproj" />
</ItemGroup> </ItemGroup>