From 3994f14010494cb2f794e1bc5f20a232a338e19a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A9=99=E5=AD=90?= <454313500@qq.com> Date: Wed, 4 May 2022 15:54:40 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E9=80=9A=E7=94=A8=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=B0=81=E8=A3=85=E3=80=81=E6=9D=83=E9=99=90?= =?UTF-8?q?=E5=B0=81=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/AccountController.cs | 4 ++- .../yi-sqlsugar-dev.db | Bin 102400 -> 102400 bytes .../Yi.Framework.Core/JwtInvoker.cs | 15 ++++++----- .../AttributeExtend/PermissionAttribute.cs | 21 +++++++++++---- Yi.Vue2.x/src/api/roleApi.js | 15 ++--------- Yi.Vue2.x/src/api/userApi.js | 9 ------- Yi.Vue2.x/src/components/TableApi.js | 15 ++--------- Yi.Vue2.x/src/components/ccTreeview.vue | 3 +-- Yi.Vue2.x/src/util/objctHandle.js | 25 +++++++++--------- 9 files changed, 46 insertions(+), 61 deletions(-) diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/AccountController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/AccountController.cs index 21678b45..9e1937df 100644 --- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/AccountController.cs +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/AccountController.cs @@ -47,7 +47,8 @@ namespace Yi.Framework.ApiMicroservice.Controllers UserEntity user = new(); if (await _iUserService.Login(loginDto.UserName, loginDto.Password, o => user = o)) { - return Result.Success("登录成功!").SetData(new { token = _jwtInvoker.GetAccessToken(user) }); + var userRoleMenu= await _iUserService.GetUserAllInfo(user.Id); + return Result.Success("登录成功!").SetData(new { token = _jwtInvoker.GetAccessToken(userRoleMenu.User,userRoleMenu.Menus) }); } return Result.SuccessError("登录失败!用户名或者密码错误!"); } @@ -80,6 +81,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers /// /// [HttpGet] + [Authorize] public async Task GetUserAllInfo() { //通过鉴权jwt获取到用户的id diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/yi-sqlsugar-dev.db b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/yi-sqlsugar-dev.db index 3913d1ee7f240b5e84f57e597bff7cb97ec0da95..1ae5c4f1ff9cd04b569656686fc0cf7e36dd23ac 100644 GIT binary patch delta 1157 zcmbW0OK1~O6o&7l?R4_I!J7JLkyPlyMJIC~lgUgM5@YGgC_+(@nu>`<5EUB)5uMUS zDZbK@mQWOoVymmP5>08dFt~8%whO_9Xddpf6}-tbrpefiFq?ar`+xsE=RebFemc$1 z_inGfxG@UO$Tfh>=LlPZAey=2H zlB!9PQIc7;AxcH$M=Fx#nTgy4$GQ8Qc3`t_16Qx>DqM$WoS$7e$BJ{@aooPm3~$-> zNt=TowEB2J0CVg)a%t!=Ll)=Kzm{K@7vGlVHpZr6w?}Touf^|bCu7%R@t9}7{Qlf0 zH)zFEVsca~DWa+dPymytwFWxY1a*0shF*HHQdxUtB8|r4dtk5`gEj0IDJ4|K{%ChA zW?akETDXxfK1`b^!KfbnH--ev7)hhDNC*i~?1vDX9TZsGLIBj-Hh%w&#SMOb%#;>4 zO_;G;(aU?ZP1h(JCK6>yniN_m@xPLF#kOov#Hu1o3|5dF?qVRpDbz-;GxG-y-n_%i zmoqO}NJ}3cRo0doVZ&-YZ02SVMZ-v>Sf*5!!(3C4>FvbBXoI2J8WncA5#E7DdYMBu zL_z}!R!G>=6igL#u2*am@c$LqeP0!2j1fUNm3zQl=!8!}Fx8`T_jI;hM+dDQwvqK| zF@xu4+@O+pUVO4-7z}qbiN+J!|7dg2e8MgVl!{6~QIJGzjAVm4fK^zA@GJZR3or{; s;WB&-b+&m|V6x!r^6jjf&C$VgZ1?IbVKolM_=TNAJ;mLrY=S%W2lI6^n*aa+ delta 367 zcmZozz}B#UZGtpo;zSu|#>9;Y%ltV$GVojTZ{Yj5SyACJpNt1HC!0Kju`>q)gQ)Ps zyN*l(49}PBdp>o}i-y+8yzw$Zh6;w}RzPHGqGx7qVQy(|IN3VhorV87gWlw}cw={< zKDOw;8=M3fp7u_Bx^Ep&pOJx)k*uA!NNfq|8QrIo3vo{5Q(k%^Hd0|SGkB#;1E z#}-)@c1VB`VqH_hwgg5-0b!sV8{akt{#*Q8`1|++`1$#^0Uf%CZ~C@6#z+=>RvxzL z!u5>R^(xFfY^t21KyyHbiHewRiD(jFc+o%SY46nM>lQwr(3YE;SE|B=>hU-+N%v)|%B%YT4>^JYPV Q`TUa)=(A4W(a-1s0OGiDZU6uP diff --git a/Yi.Framework.Net6/Yi.Framework.Core/JwtInvoker.cs b/Yi.Framework.Net6/Yi.Framework.Core/JwtInvoker.cs index e599ff74..dbaf0e95 100644 --- a/Yi.Framework.Net6/Yi.Framework.Core/JwtInvoker.cs +++ b/Yi.Framework.Net6/Yi.Framework.Core/JwtInvoker.cs @@ -23,15 +23,15 @@ namespace Yi.Framework.Core } public string GetRefreshToken(UserEntity user) { - return this.GetToken(_JWTTokenOptions.ReExpiration, user, true); + return this.GetToken(_JWTTokenOptions.ReExpiration, user,null, true); } - public string GetAccessToken(UserEntity user) + public string GetAccessToken(UserEntity user,HashSet menus) { - return this.GetToken(_JWTTokenOptions.Expiration, user); + return this.GetToken(_JWTTokenOptions.Expiration, user, menus); } - private string GetToken(int minutes, UserEntity user, bool isRefresh = false) + private string GetToken(int minutes, UserEntity user, HashSet menus,bool isRefresh = false) { List claims = new List(); claims.Add(new Claim(JwtRegisteredClaimNames.Nbf, $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}")); @@ -39,8 +39,11 @@ namespace Yi.Framework.Core claims.Add(new Claim(JwtRegisteredClaimNames.Sid, user.Id.ToString())); //-----------------------------以下从user的权限表中添加权限-----------------------例如: - claims.Add(new Claim("permission", "userentity:get:list")); - claims.Add(new Claim("permission", "userentity:get:one")); + + foreach (var m in menus) + { + claims.Add(new Claim("permission", m.PermissionCode)); + } if (isRefresh) { diff --git a/Yi.Framework.Net6/Yi.Framework.WebCore/AttributeExtend/PermissionAttribute.cs b/Yi.Framework.Net6/Yi.Framework.WebCore/AttributeExtend/PermissionAttribute.cs index 78f8655b..2e17d62f 100644 --- a/Yi.Framework.Net6/Yi.Framework.WebCore/AttributeExtend/PermissionAttribute.cs +++ b/Yi.Framework.Net6/Yi.Framework.WebCore/AttributeExtend/PermissionAttribute.cs @@ -3,6 +3,7 @@ using Microsoft.IdentityModel.JsonWebTokens; using System; using System.Collections.Generic; using System.Linq; +using System.Text.RegularExpressions; using System.Threading.Tasks; namespace Yi.Framework.WebCore.AttributeExtend @@ -40,11 +41,21 @@ namespace Yi.Framework.WebCore.AttributeExtend var perList = context.HttpContext.User.Claims.Where(u => u.Type == "permission").Select(u=> u.Value.ToString().ToLower()). ToList(); //判断权限是否存在Redis中,或者jwt中 - //if (perList.Contains(permission.ToLower())) - //{ - // result = true; - //} - result = true; + //进行正则表达式的匹配 + Regex regex = new Regex($"{permission.ToLower()}"); + foreach (var p in perList) + { + if (regex.IsMatch(p)) + { + result = true; + break; + } + } + //用户的增删改查直接可以user:*即可 + + + //这里暂时全部放行即可 + result = true; if (!result) diff --git a/Yi.Vue2.x/src/api/roleApi.js b/Yi.Vue2.x/src/api/roleApi.js index 5252affb..c4bda7df 100644 --- a/Yi.Vue2.x/src/api/roleApi.js +++ b/Yi.Vue2.x/src/api/roleApi.js @@ -1,22 +1,11 @@ import myaxios from '@/util/myaxios' +import {objctToDic} from '@/util/objctHandle' export default { getList() { return myaxios({ url: '/Role/GetList', method: 'post', - data: { - parameters: [ - { - key: "isDeleted", - value: "0", - type: 0 - - } - ], - orderBys: [ - "id" - ] - } + data: objctToDic() }) }, giveRoleSetMenu(roleList, menuList) { diff --git a/Yi.Vue2.x/src/api/userApi.js b/Yi.Vue2.x/src/api/userApi.js index a7131676..728e97a5 100644 --- a/Yi.Vue2.x/src/api/userApi.js +++ b/Yi.Vue2.x/src/api/userApi.js @@ -1,14 +1,5 @@ import myaxios from '@/util/myaxios' export default { - SetRoleByUser(userIds, roleIds) { - return myaxios({ - url: '/User/SetRoleByUser', - method: 'post', - data: { "ids1": userIds, "ids2": roleIds } - }) - }, - - GetUserInRolesByHttpUser() { return myaxios({ diff --git a/Yi.Vue2.x/src/components/TableApi.js b/Yi.Vue2.x/src/components/TableApi.js index 3c4d26a6..2dcb0487 100644 --- a/Yi.Vue2.x/src/components/TableApi.js +++ b/Yi.Vue2.x/src/components/TableApi.js @@ -1,22 +1,11 @@ import myaxios from '@/util/myaxios' +import {objctToDic} from '@/util/objctHandle' export default { getItem(url) { return myaxios({ url: url, method: 'post', - data: { - parameters: [ - { - key: "isDeleted", - value: "0", - type: 0 - - } - ], - orderBys: [ - "id" - ] - } + data: objctToDic() }) }, addItem(url, data) { diff --git a/Yi.Vue2.x/src/components/ccTreeview.vue b/Yi.Vue2.x/src/components/ccTreeview.vue index a63bfa1d..c1e4acaf 100644 --- a/Yi.Vue2.x/src/components/ccTreeview.vue +++ b/Yi.Vue2.x/src/components/ccTreeview.vue @@ -53,8 +53,7 @@ item-text="menuName" >