From 11912813a2ce8578922a29a99954281a010feb9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com> Date: Thu, 24 Mar 2022 18:05:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=99=BB=E5=BD=95=E6=9D=83?= =?UTF-8?q?=E9=99=90=E4=BB=8E=E7=BC=93=E5=AD=98=E4=B8=AD=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=E4=B8=8D=E5=AD=98=E5=85=A5jwt=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/System/SysLoginController.cs | 12 ++++---- .../Controllers/System/SysUserController.cs | 5 ++-- .../Extensions/HttpContextExtension.cs | 21 -------------- ZR.Admin.WebApi/Framework/JwtUtil.cs | 28 +++++++++++++++++-- ZR.Model/System/LoginUser.cs | 2 +- 5 files changed, 36 insertions(+), 32 deletions(-) diff --git a/ZR.Admin.WebApi/Controllers/System/SysLoginController.cs b/ZR.Admin.WebApi/Controllers/System/SysLoginController.cs index 3694650..2b89b4c 100644 --- a/ZR.Admin.WebApi/Controllers/System/SysLoginController.cs +++ b/ZR.Admin.WebApi/Controllers/System/SysLoginController.cs @@ -86,8 +86,8 @@ namespace ZR.Admin.WebApi.Controllers.System List permissions = permissionService.GetMenuPermission(user); LoginUser loginUser = new(user, roles, permissions); - CacheHelper.SetCache(GlobalConstant.UserPermKEY + user.UserId, loginUser); - return SUCCESS(JwtUtil.GenerateJwtToken(HttpContext.AddClaims(loginUser), jwtSettings.JwtSettings)); + CacheHelper.SetCache(GlobalConstant.UserPermKEY + user.UserId, permissions); + return SUCCESS(JwtUtil.GenerateJwtToken(JwtUtil.AddClaims(loginUser), jwtSettings.JwtSettings)); } /// @@ -103,11 +103,11 @@ namespace ZR.Admin.WebApi.Controllers.System // //注销登录的用户,相当于ASP.NET中的FormsAuthentication.SignOut // await HttpContext.SignOutAsync(); //}).Wait(); - var id = HttpContext.GetUId(); + var userid = HttpContext.GetUId(); var name = HttpContext.GetName(); - - CacheHelper.Remove(GlobalConstant.UserPermKEY + id); - return SUCCESS(new { name , id}); + + CacheHelper.Remove(GlobalConstant.UserPermKEY + userid); + return SUCCESS(new { name , id = userid }); } /// diff --git a/ZR.Admin.WebApi/Controllers/System/SysUserController.cs b/ZR.Admin.WebApi/Controllers/System/SysUserController.cs index 5f8420b..9f6b0a5 100644 --- a/ZR.Admin.WebApi/Controllers/System/SysUserController.cs +++ b/ZR.Admin.WebApi/Controllers/System/SysUserController.cs @@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using System.IO; using System.Linq; +using ZR.Admin.WebApi.Extensions; using ZR.Admin.WebApi.Filters; using ZR.Common; using ZR.Model; @@ -94,7 +95,7 @@ namespace ZR.Admin.WebApi.Controllers.System return ToResponse(ApiResult.Error($"新增用户 '{user.UserName}'失败,登录账号已存在")); } - user.Create_by = User.Identity.Name; + user.Create_by = HttpContext.GetName(); user.Password = NETCore.Encrypt.EncryptProvider.Md5(user.Password); return ToResponse(UserService.InsertUser(user)); @@ -112,7 +113,7 @@ namespace ZR.Admin.WebApi.Controllers.System { if (user == null || user.UserId <= 0) { return ToResponse(ApiResult.Error(101, "请求参数错误")); } - user.Update_by = User.Identity.Name; + user.Update_by = HttpContext.GetName(); int upResult = UserService.UpdateUser(user); return ToResponse(upResult); diff --git a/ZR.Admin.WebApi/Extensions/HttpContextExtension.cs b/ZR.Admin.WebApi/Extensions/HttpContextExtension.cs index 2df4734..2103a91 100644 --- a/ZR.Admin.WebApi/Extensions/HttpContextExtension.cs +++ b/ZR.Admin.WebApi/Extensions/HttpContextExtension.cs @@ -130,27 +130,6 @@ namespace ZR.Admin.WebApi.Extensions return context != null ? context.Request.Path.Value : ""; } - /// - ///组装Claims - /// - /// - /// - /// - public static List AddClaims(this HttpContext context, LoginUser user) - { - //1、创建Cookie保存用户信息,使用claim - var claims = new List() - { - new Claim(ClaimTypes.PrimarySid, user.UserId.ToString()), - new Claim(ClaimTypes.Name, user.UserName), - new Claim(ClaimTypes.UserData, JsonConvert.SerializeObject(user)) - }; - - //写入Cookie - //WhiteCookie(context, claims); - return claims; - } - private static void WhiteCookie(HttpContext context, List claims) { //2.创建声明主题 指定认证方式 这里使用cookie diff --git a/ZR.Admin.WebApi/Framework/JwtUtil.cs b/ZR.Admin.WebApi/Framework/JwtUtil.cs index 3af5a6f..c846536 100644 --- a/ZR.Admin.WebApi/Framework/JwtUtil.cs +++ b/ZR.Admin.WebApi/Framework/JwtUtil.cs @@ -10,6 +10,7 @@ using System.Linq; using System.Security.Claims; using System.Text; using ZR.Admin.WebApi.Extensions; +using ZR.Common; using ZR.Model.System; namespace ZR.Admin.WebApi.Framework @@ -129,8 +130,9 @@ namespace ZR.Admin.WebApi.Framework try { var userData = jwtToken.FirstOrDefault(x => x.Type == ClaimTypes.UserData).Value; - - LoginUser loginUser = JsonConvert.DeserializeObject(userData); + var loginUser = JsonConvert.DeserializeObject(userData); + var permissions = CacheHelper.GetCache(GlobalConstant.UserPermKEY + loginUser?.UserId); + loginUser.Permissions = (List)permissions; return loginUser; } catch (Exception ex) @@ -139,5 +141,27 @@ namespace ZR.Admin.WebApi.Framework return null; } } + + /// + ///组装Claims + /// + /// + /// + public static List AddClaims(LoginUser user) + { + user.Permissions = new List(); + //1、创建Cookie保存用户信息,使用claim + var claims = new List() + { + new Claim(ClaimTypes.PrimarySid, user.UserId.ToString()), + new Claim(ClaimTypes.Name, user.UserName), + new Claim(ClaimTypes.UserData, JsonConvert.SerializeObject(user)) + }; + + //写入Cookie + //WhiteCookie(context, claims); + return claims; + } + } } diff --git a/ZR.Model/System/LoginUser.cs b/ZR.Model/System/LoginUser.cs index 9b5e797..013a9d1 100644 --- a/ZR.Model/System/LoginUser.cs +++ b/ZR.Model/System/LoginUser.cs @@ -24,7 +24,7 @@ namespace ZR.Model.System /// /// 权限集合 /// - public List Permissions { get; set; } + public List Permissions { get; set; } = new List(); public LoginUser() { }