Compare commits

...

2 Commits

Author SHA1 Message Date
youngq b2e9814a90 1 2024-07-23 14:54:24 +08:00
youngq 012aeeb883 1111 2024-07-22 12:03:14 +08:00
5 changed files with 71 additions and 2 deletions

View File

@ -1,6 +1,7 @@
using Masuit.Tools;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using NetTaste;
using SqlSugar;
using System.Configuration;
using System.Security.Claims;
@ -70,17 +71,24 @@ namespace WGShare.API.Controllers
.Distinct()
.ToListAsync();
user.PermValue = perms.Sum(x => x.PermValue);
user.TenantName = tenant.TenantName;
var btnAutn = new List<Claim>();
btnAutn.Add(new Claim("perm", perms.Sum(x => x.PermValue).ToString()));
btnAutn.Add(new Claim("perm", user.PermValue.ToString()));
btnAutn.Add(new Claim("role", user.RoleId));
btnAutn.Add(new Claim("tenant", user.TenantId));
btnAutn.Add(new Claim("account", user.Account));
btnAutn.Add(new Claim("uname", user.UserName));
var refreshToken = Guid.NewGuid().ToString();
RedisHelper.Instance.Set(refreshToken, user, TimeSpan.FromDays(30).TotalSeconds.ToInt32());
return Ok(new
{
perms = perms.Sum(x => x.PermValue),
perms = user.PermValue,
token = _jwtHelper.CreateToken(user.Id, btnAutn),
refresh_token = refreshToken,
roleId = user.RoleId,
userName = user.UserName,
tenantName = tenant.TenantName,
@ -90,6 +98,46 @@ namespace WGShare.API.Controllers
});
}
/// <summary>
/// 刷新token
/// </summary>
/// <param name="refreshToken"></param>
/// <returns></returns>
[HttpPost("refresh"), AllowAnonymous]
public async Task<IActionResult> Refresh([FromQuery] string refreshToken)
{
var user = RedisHelper.Instance.Get<User>(refreshToken);
if (user == null || string.IsNullOrWhiteSpace(user.Id))
{
throw Oops.Oh("登录已失效,请重新登录");
}
var btnAutn = new List<Claim>();
btnAutn.Add(new Claim("perm", user.PermValue.ToString()));
btnAutn.Add(new Claim("role", user.RoleId));
btnAutn.Add(new Claim("tenant", user.TenantId));
btnAutn.Add(new Claim("account", user.Account));
btnAutn.Add(new Claim("uname", user.UserName));
var refreshTokenNew = Guid.NewGuid().ToString();
RedisHelper.Instance.Del(refreshToken);
RedisHelper.Instance.Set(refreshTokenNew, user, TimeSpan.FromDays(30).TotalSeconds.ToInt32());
return Ok(new
{
perms = user.PermValue,
token = _jwtHelper.CreateToken(user.Id, btnAutn),
refresh_token = refreshTokenNew,
roleId = user.RoleId,
userName = user.UserName,
tenantName = user.TenantName,
expire = _configuration["Jwt:Expires"].ToInt32(),
account = user.Account,
uid = user.Id
});
}
/// <summary>
/// 匿名登录,直接进入会议室
/// </summary>

View File

@ -44,6 +44,7 @@ namespace WGShare.API.Controllers.Frontend
.WhereIF(!string.IsNullOrWhiteSpace(searchKeywod), (u, r) => u.UserName.Contains(searchKeywod) || u.Account.Contains(searchKeywod))
.WhereIF(isOnline.HasValue && isOnline.Value == true, (u, r) => onlineUid.Contains(u.Id))
.WhereIF(isOnline.HasValue && isOnline.Value == false, (u, r) => !onlineUid.Contains(u.Id))
.OrderBy(u => u.Id, OrderByType.Desc)
.Select((u, r) => new UserOutputDTO
{
Id = u.Id,

View File

@ -17,6 +17,13 @@
</summary>
<returns></returns>
</member>
<member name="M:WGShare.API.Controllers.AuthController.Refresh(System.String)">
<summary>
刷新token
</summary>
<param name="refreshToken"></param>
<returns></returns>
</member>
<member name="M:WGShare.API.Controllers.AuthController.Login(WGShare.Domain.DTOs.Login.AnonymousLoginDTO)">
<summary>
匿名登录,直接进入会议室

View File

@ -11,5 +11,12 @@
},
"Redis": {
"master": "192.168.2.7:6379,password=qwe123!@#,defaultDatabase=13,name=wgshare,prefix=wgshare:"
},
"Jwt": {
"SecretKey": "apDbztyqjSNuvWnezhbdUxduhDidZbF897t2uTJs53RMdY9Cai7eexavBhka3HN6mcTe9oohjFg6bNffRRkcfMqnVKNBnmyPzkRgNopHGJAL7KMwkeZdZ7BaWnT57jCi",
"Issuer": "WGshareApi",
"Audience": "WGshareClient",
//
"Expires": 86400
}
}

View File

@ -65,5 +65,11 @@ namespace WGShare.Domain.Entities
[SugarColumn(IsIgnore = true)]
public string TenantName { get; set; }
/// <summary>
/// 权限值
/// </summary>
[SugarColumn(IsIgnore = true)]
public int PermValue { get; set; }
}
}