😎代码优化(令牌版本号相关)
This commit is contained in:
parent
7f0fa0678d
commit
c4839bfaf6
@ -56,7 +56,7 @@
|
||||
<PackageReference Include="SSH.NET" Version="2024.2.0" />
|
||||
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.6.0.2" />
|
||||
<PackageReference Include="System.Net.Http" Version="4.3.4" />
|
||||
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1215" />
|
||||
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1216" />
|
||||
<PackageReference Include="UAParser" Version="3.1.47" />
|
||||
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
|
||||
</ItemGroup>
|
||||
|
||||
@ -346,15 +346,6 @@ public class SysAuthService : IDynamicApiController, ITransient
|
||||
if (string.IsNullOrWhiteSpace(_userManager.Account))
|
||||
throw Oops.Oh(ErrorCodeEnum.D1011);
|
||||
|
||||
//// 更新用户Token版本号
|
||||
//await _sysUserRep.AsUpdateable()
|
||||
// .SetColumns(u => u.TokenVersion == u.TokenVersion + 1)
|
||||
// .Where(u => u.Id == _userManager.UserId)
|
||||
// .ExecuteCommandAsync();
|
||||
|
||||
//// 更新用户Token版本缓存 退出系统不用更新系统缓存,更新后其他已登录机全都要重新登录。
|
||||
//_sysCacheService.Set($"{CacheConst.KeyUserToken}{_userManager.UserId}", $"{_userManager.TokenVersion + 1}");
|
||||
|
||||
// 发布系统退出事件
|
||||
await _eventPublisher.PublishAsync(UserEventTypeEnum.Logout, _userManager);
|
||||
|
||||
|
||||
@ -140,8 +140,6 @@ public class SysUserService : IDynamicApiController, ITransient
|
||||
if (await query.AnyAsync(u => u.Account == input.Account)) throw Oops.Oh(ErrorCodeEnum.D1003);
|
||||
if (!string.IsNullOrWhiteSpace(input.Phone) && await query.AnyAsync(u => u.Phone == input.Phone)) throw Oops.Oh(ErrorCodeEnum.D1032);
|
||||
|
||||
////更新用户普通信息时不因更新TokenVersion
|
||||
//input.TokenVersion++;
|
||||
var user = input.Adapt<SysUser>();
|
||||
await _sysUserRep.AsUpdateable(user).IgnoreColumns(true).IgnoreColumns(u => new { u.Password, u.Status, u.TenantId }).ExecuteCommandAsync();
|
||||
|
||||
@ -288,10 +286,11 @@ public class SysUserService : IDynamicApiController, ITransient
|
||||
{
|
||||
var user = await _sysUserRep.GetByIdAsync(input.UserId) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
|
||||
|
||||
// 若账号的角色发生变化,才更新
|
||||
// 若角色发生改变则进行更新
|
||||
var roles = await _sysUserRoleService.GetUserRoleIdList(input.UserId);
|
||||
if(!roles.SequenceEqual(input.RoleIdList))
|
||||
if (!roles.SequenceEqual(input.RoleIdList))
|
||||
{
|
||||
// 更新用户角色
|
||||
await _sysUserRoleService.GrantUserRole(input);
|
||||
// 强制下线账号和失效Token
|
||||
await OfflineAndExpireToken(user);
|
||||
@ -465,7 +464,7 @@ public class SysUserService : IDynamicApiController, ITransient
|
||||
/// <param name="user"></param>
|
||||
private async Task OfflineAndExpireToken(SysUser user)
|
||||
{
|
||||
// 更新Token版本缓存,当角色、机构、密码、重置、删除、状态改变时,Token版本清0
|
||||
// 当角色、机构、密码、重置、删除、状态改变时,删除Token版本缓存
|
||||
_sysCacheService.Remove($"{CacheConst.KeyUserToken}{user.Id}");
|
||||
|
||||
// 强制下线账号
|
||||
|
||||
@ -49,9 +49,9 @@ namespace Admin.NET.Web.Core
|
||||
{
|
||||
// 查库并缓存用户Token版本
|
||||
var user = await serviceScope.ServiceProvider.GetRequiredService<ISqlSugarClient>().Queryable<SysUser>().FirstAsync(u => u.Id == long.Parse(userId));
|
||||
if (user == null || user.IsDelete)
|
||||
if (user == null || user.Status == StatusEnum.Disable)
|
||||
{
|
||||
context.Fail(new AuthorizationFailureReason(this, "账户失效或被禁止"));
|
||||
context.Fail(new AuthorizationFailureReason(this, "账号不存在或已被停用,请联系管理员。"));
|
||||
context.GetCurrentHttpContext().SignoutToSwagger();
|
||||
return;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user