通用对象查询封装、权限封装
This commit is contained in:
@@ -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
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Authorize]
|
||||
public async Task<Result> GetUserAllInfo()
|
||||
{
|
||||
//通过鉴权jwt获取到用户的id
|
||||
|
||||
Binary file not shown.
@@ -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<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>();
|
||||
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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user