src/04_Auth/Auth.Core/PermissionResolver.cs
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.Routing;
using Mkh.Auth.Abstractions;
using Mkh.Auth.Abstractions.Annotations;
using Mkh.Utils.Web;
namespace Mkh.Auth.Core;
public class PermissionResolver : IPermissionResolver
{
private readonly ControllerResolver _controllerResolver;
private readonly List<PermissionDescriptor> _descriptors = new();
public PermissionResolver(ControllerResolver controllerResolver)
{
_controllerResolver = controllerResolver;
Load();
}
/// <summary>
/// 加载权限信息
/// </summary>
private void Load()
{
var controllers = _controllerResolver.Controllers;
foreach (var controller in controllers)
{
if (!controller.Actions.Any())
continue;
foreach (var action in controller.Actions)
{
var permission = new PermissionDescriptor
{
Action = action.Name,
Controller = controller.Name,
ModuleCode = controller.Area,
HttpMethod = HttpMethod.Get,
Mode = PermissionMode.Authorization
};
//请求方式
var httpMethodAttr = action.MethodInfo.CustomAttributes.FirstOrDefault(m => typeof(HttpMethodAttribute).IsAssignableFrom(m.AttributeType));
if (httpMethodAttr != null)
{
var httpMethodName = httpMethodAttr.AttributeType.Name.Replace("Http", "").Replace("Attribute", "");
permission.HttpMethod = (HttpMethod)Enum.Parse(typeof(HttpMethod), httpMethodName);
}
#region ==权限模式==
var allowAnonymousAttribute = action.MethodInfo.CustomAttributes.FirstOrDefault(m => typeof(AllowAnonymousAttribute) == m.AttributeType);
if (allowAnonymousAttribute != null)
{
permission.Mode = PermissionMode.Anonymous;
}
后面还有 21 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
