mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 19:13:26 +08:00
【新增】弃用现在sku前端,启用全新sku组件,更加灵活,体验更好。 【新增】新增通过商品序列获取sku全新列表功能。 【新增】仓储层底层增加二级缓存功能,后面将逐步完善底层缓存中心模块。 【新增】0元购,积分兑换模式下,也去计算用户是否科技升级。 【新增】数据及业务仓储增加二级缓存功能。curd可自主控制是否缓存和清除。 【新增】订单导出excel数据增加商品名称+货品sku组合展示的方式。 【新增】自定义交易组件增加【获取商家信息】【更新商家信息】两个接口处理。 【新增】增加公告列表及公告详情页面,首页组件公告点击跳转列表展示。 【新增】个人中心增加【公告中心】入口。 【新增】后台余额变动增加说明录入。 【调整】将前端能进行分包的文件夹都进行分包,减少主包占用,方便进行二开。 【调整】因ckeditor5存在图片不可设置宽度,上传不支持mp4,排版不畅等情况,降级使用ckeditor4版本。 【修复】修复0.5.5版本售后积分返还机制积分模式判断异常的问题。 【修复】修复使用积分全额抵扣,或其他优惠政策导致的0元购,未进行短信提醒及小票打印机未打印的问题。 【修复】修复更换ckeditor4编辑器后接龙添加编辑调用失败的问题。 【修复】修复积分全额抵扣,金额0元购的情况下,进行售后执行完毕,订单未完结的情况。 【优化】去除分销申请面板按钮无用并失效报错的customStyle属性。 【优化】优化部分方法中使用手写字符串的遗留问题,统一采用enum方式。 【优化】优化前端及接口部分命名错误的问题。错将skill误写成seckill。 【优化】去除uniapp端多个客服代码。 【优化】商品详情底部完善购物车数量显示的问题。 【优化】优化团购列表,拼团列表,秒杀页面页面样式布局差异问题。 【优化】调整支付结果界面样式效果,仿微信支付结果界面。更加清晰明朗。 【优化】优化售后提交页面json计算,开放当用户下单后但未发货情况下,可以申请直接售后的操作需求。 【优化】后台商家手机号码支持设置多个,使用小写逗号分隔,方便多个商家管理员接收下单提醒。 【优化】后台售后单审核,调整售后商品为必选项。
120 lines
4.0 KiB
C#
120 lines
4.0 KiB
C#
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 CoreCms.Net.Model.Entities;
|
||
using CoreCms.Net.Utility.Extensions;
|
||
using Microsoft.IdentityModel.Tokens;
|
||
|
||
namespace CoreCms.Net.Utility.Helper
|
||
{
|
||
/// <summary>
|
||
/// Jwt帮助工具
|
||
/// </summary>
|
||
public static class JwtTokenHelper
|
||
{
|
||
/// <summary>
|
||
/// 创建Token(暂不使用)
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public static string CreateJwt(CoreCmsUser userInfo)
|
||
{
|
||
//创建声明Token数组
|
||
var claim = new List<Claim> {
|
||
new Claim(ClaimTypes.GivenName, userInfo.userName),
|
||
new Claim(ClaimTypes.Name, userInfo.nickName),
|
||
new Claim(JwtRegisteredClaimNames.Jti, userInfo.id.ToString()),
|
||
new Claim(ClaimTypes.Expiration, DateTime.Now.AddHours(1).ToString("yyyy-MM-dd HH:mm:ss")) };
|
||
|
||
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("yanglingcong@qq.com"));//密钥大小要超过128bt,最少要16位
|
||
|
||
//实例化一个token对象
|
||
//第一种方式
|
||
//var token = new JwtSecurityToken(claims: claim);
|
||
|
||
//第二种方式
|
||
var token = new JwtSecurityToken(
|
||
issuer: "kevin",//发起人:当前项目
|
||
audience: "kevin project",//订阅:我们需要谁去使用这个Token
|
||
claims: claim,//声明的数组
|
||
expires: DateTime.Now.AddHours(1),//当前时间加一小时,一小时后过期
|
||
signingCredentials: new SigningCredentials(key, SecurityAlgorithms.HmacSha256)//数字签名 第一部分是密钥,第二部分是加密方式
|
||
);
|
||
|
||
//生成token
|
||
var jwtToken = new JwtSecurityTokenHandler().WriteToken(token);
|
||
return jwtToken;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 解析token
|
||
/// </summary>
|
||
/// <param name="token"></param>
|
||
/// <returns></returns>
|
||
public static GetTokenModel AnalysisToken(string token)
|
||
{
|
||
//第一种直接用JwtSecurityTokenHandler提供的read方法
|
||
var jwtHander = new JwtSecurityTokenHandler();
|
||
JwtSecurityToken jwtSecurityToken = jwtHander.ReadJwtToken(token);
|
||
|
||
GetTokenModel tokenModel = new GetTokenModel();
|
||
var currentInfo = jwtSecurityToken.Claims;
|
||
if (currentInfo.Any())
|
||
{
|
||
tokenModel.UserName = currentInfo.FirstOrDefault(f => f.Type == ClaimTypes.MobilePhone)!.Value;
|
||
tokenModel.NickName = currentInfo.FirstOrDefault(f => f.Type == ClaimTypes.Name)!.Value;
|
||
tokenModel.UserId = currentInfo.FirstOrDefault(f => f.Type == ClaimTypes.NameIdentifier)!.Value.ObjectToInt(0);
|
||
|
||
tokenModel.Expired = currentInfo.FirstOrDefault(f => f.Type == ClaimTypes.Expired)!.Value.ObjectToInt(0);
|
||
var dt = DateTime.Now;
|
||
tokenModel.Expiration = currentInfo.FirstOrDefault(f => f.Type == ClaimTypes.Expiration)!.Value.ObjectToDate(dt);
|
||
|
||
if (dt > tokenModel.Expiration)
|
||
{
|
||
return null;
|
||
}
|
||
}
|
||
return tokenModel;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取token信息
|
||
/// </summary>
|
||
public class GetTokenModel
|
||
{
|
||
/// <summary>
|
||
/// 用户
|
||
/// </summary>
|
||
public string UserName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 用户昵称
|
||
/// </summary>
|
||
public string NickName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 用户序列
|
||
/// </summary>
|
||
public int UserId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 有效时间分钟
|
||
/// </summary>
|
||
public int Expired { get; set; }
|
||
|
||
/// <summary>
|
||
/// 有效时间
|
||
/// </summary>
|
||
public DateTime Expiration { get; set; }
|
||
|
||
|
||
}
|
||
|
||
|
||
}
|