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.Expressions;
using System.Reflection;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;
using Aspose.Cells.Drawing;
using JNPF;
using JNPF.Common.Contracts;
using JNPF.Common.Core.Manager;
using JNPF.Common.Enums;
using JNPF.Common.Extension;
using JNPF.DataEncryption;
using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
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>

View File

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

View File

@@ -21,7 +21,7 @@ namespace JNPF.Common.Core.Manager;
/// <summary>
/// 用户管理 .
/// </summary>
public class UserManager : IUserManager, IScoped
public partial class UserManager : IUserManager, IScoped
{
/// <summary>
/// 用户表仓储.
@@ -76,7 +76,6 @@ public class UserManager : IUserManager, IScoped
public UserEntity User
{
get => _repository.GetSingle(u => u.Id == UserId);
}
/// <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.Extras.DatabaseAccessor.SqlSugar.Models;
using Aop.Api.Domain;
using Tnb.WarehouseMgr;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
@@ -606,6 +605,8 @@ public class OAuthService : IDynamicApiController, ITransient
{ ClaimConst.LOGINTYPE,input.login_type}
}, tokenTimeout);
//modify by ly on 20230804
UserManager.AsscessToken = accessToken;
// 单点登录标识缓存
if (_oauthOptions.Enabled) _cacheManager.Set("OnlineTicket_" + input.online_ticket, options.ConfigId);

View File

@@ -12,7 +12,6 @@
<ItemGroup>
<ProjectReference Include="..\..\common\Tnb.Common.Core\Tnb.Common.Core.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" />
</ItemGroup>