Yi.Framework.Net6/Yi.Framework.WebCore/AuthorizationPolicy/CustomAuthorizationHandler.cs

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.IdentityModel.JsonWebTokens;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks;
using Yi.Framework.Common.Const;
using Yi.Framework.Core;
using Yi.Framework.Model.Models;

namespace Yi.Framework.WebCore.AuthorizationPolicy
{
    //策略验证的Handler  继承AuthorizationHandler 泛型类   泛型参数为  策略参数
    public class CustomAuthorizationHandler : AuthorizationHandler<CustomAuthorizationRequirement>
    {

        //private CacheClientDB _cacheClientDB;
        /// <summary>
        /// 构造函数
        /// </summary>
        public CustomAuthorizationHandler()
        {
        }

        //验证的方法就在这里
        protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, CustomAuthorizationRequirement requirement)
        { 
            var currentClaim = context.User.Claims.FirstOrDefault(u => u.Type == JwtRegisteredClaimNames.Sid);
                //DefaultHttpContext httpcontext = (DefaultHttpContext)context.AuthenticateAsync();
            if (currentClaim!=null) //说明没有写入Sid  没有登录
            {
                context.Succeed(requirement); //验证通过了
            }
            //string currentUserId = "";
            //if (!string.IsNullOrWhiteSpace(currentClaim.Value))
            //{
            //    currentUserId = currentClaim.Value;
            //}
             //DefaultHttpContext httpcontext = (DefaultHttpContext)context.Resource;
            return Task.CompletedTask; //验证不同过
        }
    }


    /// <summary>
    /// 菜单权限策略
    /// </summary>
    public static class CustomAuthorizationHandlerExtension
    {
        public static Task AuthorizationMenueExtension(this AuthorizationHandlerContext handlerContext, CustomAuthorizationRequirement requirement)
        {
            bool bog = true;
            if (bog)
            {
                return Task.Run(() =>
                 {
                     handlerContext.Succeed(requirement); //验证通过了
后面还有 9 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。