通用对象查询封装、权限封装

This commit is contained in:
橙子
2022-05-04 15:54:40 +08:00
parent b934ce2893
commit 3994f14010
9 changed files with 46 additions and 61 deletions

View File

@@ -47,7 +47,8 @@ namespace Yi.Framework.ApiMicroservice.Controllers
UserEntity user = new(); UserEntity user = new();
if (await _iUserService.Login(loginDto.UserName, loginDto.Password, o => user = o)) 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("登录失败!用户名或者密码错误!"); return Result.SuccessError("登录失败!用户名或者密码错误!");
} }
@@ -80,6 +81,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpGet] [HttpGet]
[Authorize]
public async Task<Result> GetUserAllInfo() public async Task<Result> GetUserAllInfo()
{ {
//通过鉴权jwt获取到用户的id //通过鉴权jwt获取到用户的id

View File

@@ -23,15 +23,15 @@ namespace Yi.Framework.Core
} }
public string GetRefreshToken(UserEntity user) 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<MenuEntity> 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<MenuEntity> menus,bool isRefresh = false)
{ {
List<Claim> claims = new List<Claim>(); List<Claim> claims = new List<Claim>();
claims.Add(new Claim(JwtRegisteredClaimNames.Nbf, $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}")); 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())); claims.Add(new Claim(JwtRegisteredClaimNames.Sid, user.Id.ToString()));
//-----------------------------以下从user的权限表中添加权限-----------------------例如: //-----------------------------以下从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) if (isRefresh)
{ {

View File

@@ -3,6 +3,7 @@ using Microsoft.IdentityModel.JsonWebTokens;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Yi.Framework.WebCore.AttributeExtend 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(); var perList = context.HttpContext.User.Claims.Where(u => u.Type == "permission").Select(u=> u.Value.ToString().ToLower()). ToList();
//判断权限是否存在Redis中,或者jwt中 //判断权限是否存在Redis中,或者jwt中
//if (perList.Contains(permission.ToLower())) //进行正则表达式的匹配
//{ Regex regex = new Regex($"{permission.ToLower()}");
// result = true; foreach (var p in perList)
//} {
result = true; if (regex.IsMatch(p))
{
result = true;
break;
}
}
//用户的增删改查直接可以user:*即可
//这里暂时全部放行即可
result = true;
if (!result) if (!result)

View File

@@ -1,22 +1,11 @@
import myaxios from '@/util/myaxios' import myaxios from '@/util/myaxios'
import {objctToDic} from '@/util/objctHandle'
export default { export default {
getList() { getList() {
return myaxios({ return myaxios({
url: '/Role/GetList', url: '/Role/GetList',
method: 'post', method: 'post',
data: { data: objctToDic()
parameters: [
{
key: "isDeleted",
value: "0",
type: 0
}
],
orderBys: [
"id"
]
}
}) })
}, },
giveRoleSetMenu(roleList, menuList) { giveRoleSetMenu(roleList, menuList) {

View File

@@ -1,14 +1,5 @@
import myaxios from '@/util/myaxios' import myaxios from '@/util/myaxios'
export default { export default {
SetRoleByUser(userIds, roleIds) {
return myaxios({
url: '/User/SetRoleByUser',
method: 'post',
data: { "ids1": userIds, "ids2": roleIds }
})
},
GetUserInRolesByHttpUser() { GetUserInRolesByHttpUser() {
return myaxios({ return myaxios({

View File

@@ -1,22 +1,11 @@
import myaxios from '@/util/myaxios' import myaxios from '@/util/myaxios'
import {objctToDic} from '@/util/objctHandle'
export default { export default {
getItem(url) { getItem(url) {
return myaxios({ return myaxios({
url: url, url: url,
method: 'post', method: 'post',
data: { data: objctToDic()
parameters: [
{
key: "isDeleted",
value: "0",
type: 0
}
],
orderBys: [
"id"
]
}
}) })
}, },
addItem(url, data) { addItem(url, data) {

View File

@@ -53,8 +53,7 @@
item-text="menuName" item-text="menuName"
> >
<template v-slot:append="{ item }"> <template v-slot:append="{ item }">
<v-btn class="mr-2">编号:{{ item.id }}</v-btn> <v-btn v-show="item.menuType==1" class="mr-2">权限:{{ item.permissionCode }}</v-btn>
<v-btn class="mr-2">权限:{{ item.permissionCode }}</v-btn>
<!-- <v-btn class="mr-2">图标:{{ item.icon }}</v-btn> --> <!-- <v-btn class="mr-2">图标:{{ item.icon }}</v-btn> -->
<!-- <v-btn class="mr-2">路由:{{ item.router }}</v-btn> --> <!-- <v-btn class="mr-2">路由:{{ item.router }}</v-btn> -->
<!-- <v-btn v-if="item.mould" class="mr-2">接口名:{{ item.mould.mould_name }}</v-btn> <!-- <v-btn v-if="item.mould" class="mr-2">接口名:{{ item.mould.mould_name }}</v-btn>

View File

@@ -8,6 +8,11 @@ export function deepCopy(obj) {
//转换数据,0是相等1是模糊查询 //转换数据,0是相等1是模糊查询
export function objctToDic(object, isByPage) { export function objctToDic(object, isByPage) {
if (object == undefined) {
object = {};
}
if (isByPage) { if (isByPage) {
var paramPage = { var paramPage = {
"index": object.pageIndex, "index": object.pageIndex,
@@ -20,7 +25,7 @@ export function objctToDic(object, isByPage) {
delete newData.pageIndex; delete newData.pageIndex;
delete newData.pageSize; delete newData.pageSize;
var newList = [Object.keys(newData).map(val => { var newList = [Object.keys(newData).map(val => {
return { return {
key: val, key: val,
value: object[val], value: object[val],
@@ -30,11 +35,9 @@ export function objctToDic(object, isByPage) {
//过滤封装 //过滤封装
newList[0].forEach((item, index) => { newList[0].forEach((item, index) => {
if(item.value.length>0) if (item.value.length > 0) {
{ if (item.key == 'isDeleted') {
if(item.key=='isDeleted') item.type = 0;
{
item.type=0;
} }
paramPage.parameters.push(item); paramPage.parameters.push(item);
} }
@@ -55,11 +58,9 @@ export function objctToDic(object, isByPage) {
} }
})] })]
thisList[0].forEach((item, index) => { thisList[0].forEach((item, index) => {
if(item.value.length>0) if (item.value.length > 0) {
{ if (item.key == 'isDeleted') {
if(item.key=='isDeleted') item.type = 0;
{
item.type=0;
} }
params.parameters.push(item); params.parameters.push(item);
} }