Token刷新接口

This commit is contained in:
马梓彭 2026-02-28 12:11:09 +08:00
parent ab1a48473a
commit e41db87728
12 changed files with 43 additions and 267 deletions

View File

@ -20,7 +20,8 @@ public class AuthManager : ITransient
/// <summary>
/// 是否是超级管理员
/// </summary>
public bool IsSuperAdmin => UserId == 1;
public bool IsSuperAdmin => UserId == 1000;
/// <summary>
/// 登录名
/// </summary>

View File

@ -1,4 +1,4 @@
using YD_Event.Application.Auth.Dtos;
using YD_Event.Application.Auth.Dtos;
namespace YD_Event.Application.Auth;
/// <summary>
@ -92,4 +92,30 @@ public class AuthService : IDynamicApiController
var stream = new MemoryStream(data.Bytes);
return new FileStreamResult(stream, "image/gif");
}
/// <summary>
/// 刷新Token
/// </summary>
/// <param name="accessToken"></param>
/// <returns></returns>
[HttpPost("refresh")]
public string RefreshToken([FromQuery] string accessToken)
{
var context = _httpContextAccessor.HttpContext;
var refreshToken = context.Request.Headers["x-access-token"].ToString();
if (string.IsNullOrWhiteSpace(accessToken) || string.IsNullOrWhiteSpace(refreshToken))
{
throw Oops.Bah("无效的Token");
}
// 交换新的 Token
var newToken = JWTEncryption.Exchange(accessToken, refreshToken);
// 设置响应报文头
context.Response.Headers["access-token"] = newToken;
context.Response.Headers["x-access-token"] = refreshToken; // 刷新Token通常保持不变,或者也可以轮换
return newToken;
}
}

View File

@ -1,70 +0,0 @@
using YD_Event.Application.User.Dtos;
namespace YD_Event.Application.User;
/// <summary>
/// 微信小程序授权用户
/// </summary>
public class AuthAccountService : IDynamicApiController
{
private readonly ISqlSugarRepository<AuthAccount> _repository;
public AuthAccountService(ISqlSugarRepository<AuthAccount> repository)
{
_repository = repository;
}
/// <summary>
/// 博客授权用户列表
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[DisplayName("博客授权用户列表")]
[HttpGet]
public async Task<PageResult<AuthAccountPageOutput>> List([FromQuery] AuthAccountPageQueryInput dto)
{
return await _repository.AsQueryable()
.WhereIF(!string.IsNullOrWhiteSpace(dto.Name), x => x.Name.Contains(dto.Name))
.OrderByDescending(x => x.Id)
.Select(x => new AuthAccountPageOutput
{
Id = x.Id,
Name = x.Name,
Gender = x.Gender,
Type = x.Type,
IsBlogger = x.IsBlogger,
Avatar = x.Avatar,
CreatedTime = x.CreatedTime
}).ToPagedListAsync(dto);
}
/// <summary>
/// 设置博主
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[DisplayName("设置博主")]
[HttpPatch("SetBlogger")]
public async Task SetBlogger(KeyDto dto)
{
await _repository.UpdateAsync(x => new AuthAccount()
{
IsBlogger = !x.IsBlogger
}, x => x.Id == dto.Id);
}
/// <summary>
/// 删除博客用户
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[DisplayName("删除博客用户")]
[HttpDelete("delete")]
public async Task Delete(KeyDto dto)
{
await _repository.UpdateAsync(x => new AuthAccount()
{
DeleteMark = true
}, x => x.Id == dto.Id);
}
}

View File

@ -1,33 +0,0 @@
namespace YD_Event.Application.User.Dtos;
public class AuthAccountPageOutput
{
/// <summary>
/// 主键
/// </summary>
public long Id { get; set; }
/// <summary>
/// 昵称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 性别
/// </summary>
public Gender Gender { get; set; }
/// <summary>
/// 授权类型
/// </summary>
public string Type { get; set; }
/// <summary>
/// 是否是博主
/// </summary>
public bool IsBlogger { get; set; }
/// <summary>
/// 头像
/// </summary>
public string Avatar { get; set; }
/// <summary>
/// 注册时间
/// </summary>
public DateTime CreatedTime { get; set; }
}

View File

@ -1,9 +0,0 @@
namespace YD_Event.Application.User.Dtos;
public class AuthAccountPageQueryInput : Pagination
{
/// <summary>
/// 昵称
/// </summary>
public string Name { get; set; }
}

View File

@ -125,6 +125,13 @@
<param name="id">验证码唯一id</param>
<returns></returns>
</member>
<member name="M:YD_Event.Application.Auth.AuthService.RefreshToken(System.String)">
<summary>
刷新Token
</summary>
<param name="accessToken"></param>
<returns></returns>
</member>
<member name="P:YD_Event.Application.Auth.Dtos.AdminLoginInput.Account">
<summary>
登录名
@ -2364,32 +2371,6 @@
<param name="input"></param>
<returns></returns>
</member>
<member name="T:YD_Event.Application.User.AuthAccountService">
<summary>
微信小程序授权用户
</summary>
</member>
<member name="M:YD_Event.Application.User.AuthAccountService.List(YD_Event.Application.User.Dtos.AuthAccountPageQueryInput)">
<summary>
博客授权用户列表
</summary>
<param name="dto"></param>
<returns></returns>
</member>
<member name="M:YD_Event.Application.User.AuthAccountService.SetBlogger(YD_Event.Core.Shared.KeyDto)">
<summary>
设置博主
</summary>
<param name="dto"></param>
<returns></returns>
</member>
<member name="M:YD_Event.Application.User.AuthAccountService.Delete(YD_Event.Core.Shared.KeyDto)">
<summary>
删除博客用户
</summary>
<param name="dto"></param>
<returns></returns>
</member>
<member name="P:YD_Event.Application.User.Dtos.AddSysUserInput.Name">
<summary>
姓名
@ -2410,46 +2391,6 @@
状态(默认启用)
</summary>
</member>
<member name="P:YD_Event.Application.User.Dtos.AuthAccountPageOutput.Id">
<summary>
主键
</summary>
</member>
<member name="P:YD_Event.Application.User.Dtos.AuthAccountPageOutput.Name">
<summary>
昵称
</summary>
</member>
<member name="P:YD_Event.Application.User.Dtos.AuthAccountPageOutput.Gender">
<summary>
性别
</summary>
</member>
<member name="P:YD_Event.Application.User.Dtos.AuthAccountPageOutput.Type">
<summary>
授权类型
</summary>
</member>
<member name="P:YD_Event.Application.User.Dtos.AuthAccountPageOutput.IsBlogger">
<summary>
是否是博主
</summary>
</member>
<member name="P:YD_Event.Application.User.Dtos.AuthAccountPageOutput.Avatar">
<summary>
头像
</summary>
</member>
<member name="P:YD_Event.Application.User.Dtos.AuthAccountPageOutput.CreatedTime">
<summary>
注册时间
</summary>
</member>
<member name="P:YD_Event.Application.User.Dtos.AuthAccountPageQueryInput.Name">
<summary>
昵称
</summary>
</member>
<member name="P:YD_Event.Application.User.Dtos.ChangePasswordOutput.OriginalPwd">
<summary>
原密码

View File

@ -41,7 +41,7 @@
"DbType": "SqlServer", // MySql、SqlServer、Sqlite、Oracle、PostgreSQL、Dm、Kdbndp、Oscar、MySqlConnector、Access、OpenGauss、QuestDB、HG、ClickHouse、GBase、Odbc、Custom
"ConnectionString": "Data Source=rm-uf64b8oxdt19pfyxfao.sqlserver.rds.aliyuncs.com;Database=EventServerDB_QA;User ID=qa;Password=Admin@123;Connect Timeout=500;Encrypt=True;TrustServerCertificate=True;",
"IsAutoCloseConnection": true,
"EnableInitDb": true // 启用数据库以及数据表初始化(首次运行项目时开启可以自动创建数据库和初始化项目运行的基础数据)
"EnableInitDb": false // 启用数据库以及数据表初始化(首次运行项目时开启可以自动创建数据库和初始化项目运行的基础数据)
}
]
},

View File

@ -5,7 +5,7 @@ namespace YD_Event.Core.Entities;
/// <summary>
/// 操作日志
/// </summary>
public class SysOperationLog : Entity<long>, ISoftDelete, ICreatedUserId, ICreatedTime, IUpdatedUserId, IUpdatedTime
public class SysOperationLog : Entity<long>, ICreatedTime
{
/// <summary>
/// 操作用户ID
@ -116,28 +116,8 @@ public class SysOperationLog : Entity<long>, ISoftDelete, ICreatedUserId, ICreat
[SugarColumn(ColumnDataType = "text")]
public string? Exception { get; set; }
/// <summary>
/// 标记删除
/// </summary>
public bool DeleteMark { get; set; }
/// <summary>
/// 创建人
/// </summary>
public long CreatedUserId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 更新人
/// </summary>
public long? UpdatedUserId { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime? UpdatedTime { get; set; }
}

View File

@ -2,7 +2,7 @@
/// <summary>
/// 用户登录日志
/// </summary>
public class SysSigninLog : Entity<long>, ISoftDelete, ICreatedUserId, ICreatedTime, IUpdatedUserId, IUpdatedTime
public class SysSigninLog : Entity<long>, ICreatedTime
{
/// <summary>
/// 用户ID
@ -39,28 +39,8 @@ public class SysSigninLog : Entity<long>, ISoftDelete, ICreatedUserId, ICreatedT
[SugarColumn(Length = 256)]
public string? Message { get; set; }
/// <summary>
/// 标记删除
/// </summary>
public bool DeleteMark { get; set; }
/// <summary>
/// 创建人
/// </summary>
public long CreatedUserId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 更新人
/// </summary>
public long? UpdatedUserId { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime? UpdatedTime { get; set; }
}

View File

@ -8,7 +8,7 @@ namespace YD_Event.Core.Entities;
public class SysUser : Entity<long>, ISoftDelete, ICreatedUserId, ICreatedTime, IUpdatedUserId, IUpdatedTime, IAvailability
{
/// <summary>
/// 用户名
/// 账号
/// </summary>
[SugarColumn(Length = 32)]
public string Account { get; set; }

View File

@ -2,7 +2,7 @@
{
"Id": 1000,
"Account": "admin",
"Password": "9658b68df5e6208e97ae6c8f4eac6c39",
"Password": "4a90afb9ffacbcdea4758f4c46417d2a",
"Name": "管理员",
"Gender": 1,
"OrgId": 1000,
@ -17,7 +17,7 @@
{
"Id": 1001,
"Account": "mazipeng",
"Password": "9658b68df5e6208e97ae6c8f4eac6c39",
"Password": "4a90afb9ffacbcdea4758f4c46417d2a",
"Name": "马梓彭",
"Gender": 1,
"OrgId": 1000,

View File

@ -2730,31 +2730,11 @@
异常信息
</summary>
</member>
<member name="P:YD_Event.Core.Entities.SysOperationLog.DeleteMark">
<summary>
标记删除
</summary>
</member>
<member name="P:YD_Event.Core.Entities.SysOperationLog.CreatedUserId">
<summary>
创建人
</summary>
</member>
<member name="P:YD_Event.Core.Entities.SysOperationLog.CreatedTime">
<summary>
创建时间
</summary>
</member>
<member name="P:YD_Event.Core.Entities.SysOperationLog.UpdatedUserId">
<summary>
更新人
</summary>
</member>
<member name="P:YD_Event.Core.Entities.SysOperationLog.UpdatedTime">
<summary>
更新时间
</summary>
</member>
<member name="T:YD_Event.Core.Entities.SysOrganization">
<summary>
组织机构信息表
@ -2950,31 +2930,11 @@
消息
</summary>
</member>
<member name="P:YD_Event.Core.Entities.SysSigninLog.DeleteMark">
<summary>
标记删除
</summary>
</member>
<member name="P:YD_Event.Core.Entities.SysSigninLog.CreatedUserId">
<summary>
创建人
</summary>
</member>
<member name="P:YD_Event.Core.Entities.SysSigninLog.CreatedTime">
<summary>
创建时间
</summary>
</member>
<member name="P:YD_Event.Core.Entities.SysSigninLog.UpdatedUserId">
<summary>
更新人
</summary>
</member>
<member name="P:YD_Event.Core.Entities.SysSigninLog.UpdatedTime">
<summary>
更新时间
</summary>
</member>
<member name="T:YD_Event.Core.Entities.SysUser">
<summary>
系统用户表
@ -2982,7 +2942,7 @@
</member>
<member name="P:YD_Event.Core.Entities.SysUser.Account">
<summary>
用户名
账号
</summary>
</member>
<member name="P:YD_Event.Core.Entities.SysUser.Password">