From 0fb0f17319ecf71d66b96a6acfd07f754be9443e Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期四, 24 十月 2024 13:44:38 +0800
Subject: [PATCH] WCS添加穿梭车信息表,修改任务信息表
---
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/Authorization/JwtHelper.cs | 121 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 121 insertions(+), 0 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Authorization/JwtHelper.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Authorization/JwtHelper.cs"
new file mode 100644
index 0000000..2ac124b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Authorization/JwtHelper.cs"
@@ -0,0 +1,121 @@
+锘縰sing Microsoft.IdentityModel.Tokens;
+using System;
+using System.Collections.Generic;
+using System.IdentityModel.Tokens.Jwt;
+using System.Linq;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.HttpContextUser;
+
+namespace WIDESEA_Core.Authorization
+{
+ public class JwtHelper
+ {
+
+ /// <summary>
+ /// 鐢熸垚JWT
+ /// </summary>
+ /// <param name="serInfo"></param>
+ /// <returns></returns>
+ public static string IssueJwt(TokenModelJwt tokenModel)
+ {
+ string exp = $"{new DateTimeOffset(DateTime.Now.AddMinutes(/*tokenModel.UserId == 1 ? 43200 : */AppSettings.app("ExpMinutes").ObjToInt())).ToUnixTimeSeconds()}";
+ List<Claim> claims = new List<Claim>
+ {
+ new Claim(JwtRegisteredClaimNames.Jti, tokenModel.UserId.ToString()),
+ new Claim(JwtRegisteredClaimNames.Iat, $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}"),
+ new Claim(JwtRegisteredClaimNames.Nbf, $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}") ,
+ //JWT杩囨湡鏃堕棿
+ //榛樿璁剧疆jwt杩囨湡鏃堕棿120鍒嗛挓
+ new Claim (JwtRegisteredClaimNames.Exp, exp),
+ new Claim(JwtRegisteredClaimNames.Iss, AppSecret.Issuer),
+ new Claim(JwtRegisteredClaimNames.Aud, AppSecret.Audience),
+ new Claim(ClaimTypes.Role, tokenModel.RoleId.ToString()),
+ new Claim(ClaimTypes.Name, tokenModel.UserName),
+ new Claim(nameof(TokenModelJwt.TenantId), tokenModel.TenantId.ToString())
+ };
+
+ // 鍙互灏嗕竴涓敤鎴风殑澶氫釜瑙掕壊鍏ㄩ儴璧嬩簣锛�
+ // 浣滆�咃細DX 鎻愪緵鎶�鏈敮鎸侊紱
+ //绉橀挜16浣�
+ var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(AppSecret.JWT));
+ var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
+ JwtSecurityToken securityToken = new JwtSecurityToken(issuer: AppSecret.Issuer, claims: claims, signingCredentials: creds);
+ string jwt = new JwtSecurityTokenHandler().WriteToken(securityToken);
+ return jwt;
+ }
+
+ /// <summary>
+ /// 瑙f瀽
+ /// </summary>
+ /// <param name="jwtStr"></param>
+ /// <returns></returns>
+ public static UserInfo SerializeJwt(string jwtStr)
+ {
+ var jwtHandler = new JwtSecurityTokenHandler();
+ JwtSecurityToken jwtToken = jwtHandler.ReadJwtToken(jwtStr);
+ UserInfo userInfo = new UserInfo
+ {
+ UserId = Convert.ToInt32(jwtToken.Id),
+ RoleId = (jwtToken.Payload[ClaimTypes.Role] ?? 0).ObjToInt(),
+ };
+ return userInfo;
+ }
+ /// <summary>
+ /// 鑾峰彇杩囨湡鏃堕棿
+ /// </summary>
+ /// <param name="jwtStr"></param>
+ /// <returns></returns>
+ public static DateTime GetExp(string jwtStr)
+ {
+ var jwtHandler = new JwtSecurityTokenHandler();
+ JwtSecurityToken jwtToken = jwtHandler.ReadJwtToken(jwtStr);
+
+ DateTime expDate = (jwtToken.Payload[JwtRegisteredClaimNames.Exp] ?? 0).ObjToInt().GetTimeSpmpToDate();
+ return expDate;
+ }
+ public static bool IsExp(string jwtStr)
+ {
+ return GetExp(jwtStr) < DateTime.Now;
+ }
+
+ public static int GetUserId(string jwtStr)
+ {
+ try
+ {
+ if (jwtStr.IsNullOrEmpty()) return 0;
+ jwtStr = jwtStr.Replace("Bearer ", "");
+ return new JwtSecurityTokenHandler().ReadJwtToken(jwtStr).Id.ObjToInt();
+ }
+ catch
+ {
+ return 0;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 浠ょ墝
+ /// </summary>
+ public class TokenModelJwt
+ {
+ /// <summary>
+ /// UserId
+ /// </summary>
+ public long UserId { get; set; }
+ /// <summary>
+ /// 瑙掕壊
+ /// </summary>
+ public int RoleId { get; set; }
+ /// <summary>
+ /// 鑱岃兘
+ /// </summary>
+ public string UserName { get; set; }
+
+ public long TenantId { get; set; }
+
+ }
+}
--
Gitblit v1.9.3