diff --git a/WGShare.API/Controllers/AuthController.cs b/WGShare.API/Controllers/AuthController.cs index 33eb2a1..d2eeac6 100644 --- a/WGShare.API/Controllers/AuthController.cs +++ b/WGShare.API/Controllers/AuthController.cs @@ -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(); - 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 }); } + /// + /// 刷新token + /// + /// + /// + [HttpPost("refresh"), AllowAnonymous] + public async Task Refresh([FromBody] string refreshToken) + { + var user = RedisHelper.Instance.Get(refreshToken); + if (user == null || string.IsNullOrWhiteSpace(user.Id)) + { + throw Oops.Oh("登录已失效,请重新登录"); + } + + var btnAutn = new List(); + 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 + }); + } + /// /// 匿名登录,直接进入会议室 /// diff --git a/WGShare.API/WGShare.API.xml b/WGShare.API/WGShare.API.xml index 5d917e6..1d26a16 100644 --- a/WGShare.API/WGShare.API.xml +++ b/WGShare.API/WGShare.API.xml @@ -17,6 +17,13 @@ + + + 刷新token + + + + 匿名登录,直接进入会议室 diff --git a/WGShare.API/appsettings.Development.json b/WGShare.API/appsettings.Development.json index d441ebe..a74911f 100644 --- a/WGShare.API/appsettings.Development.json +++ b/WGShare.API/appsettings.Development.json @@ -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": 600 } } diff --git a/WGShare.API/appsettings.json b/WGShare.API/appsettings.json index cc130ac..1e5e164 100644 --- a/WGShare.API/appsettings.json +++ b/WGShare.API/appsettings.json @@ -11,7 +11,7 @@ "Issuer": "WGshareApi", "Audience": "WGshareClient", // 过期 秒 - "Expires": 86400 + "Expires": 3600 }, "ConnectionStrings": { "metting": "Database=metting;Server=192.168.2.9;Port=3306;Uid=root;Pwd=qwe123!@#;AllowZeroDateTime=True;ConvertZeroDateTime=True;", diff --git a/WGShare.Domain/Entities/User.cs b/WGShare.Domain/Entities/User.cs index 60e466a..914c5a6 100644 --- a/WGShare.Domain/Entities/User.cs +++ b/WGShare.Domain/Entities/User.cs @@ -65,5 +65,11 @@ namespace WGShare.Domain.Entities [SugarColumn(IsIgnore = true)] public string TenantName { get; set; } + + /// + /// 权限值 + /// + [SugarColumn(IsIgnore = true)] + public int PermValue { get; set; } } }