NetCore通过中间件判断接口是否存在 AllowAnonymousAttribute 特性

news/2024/5/20 0:07:57 标签: c#, .netcore

.NET Core中,可以通过检查接口上的AllowAnonymous特性来判断一个接口是否被标记为允许匿名访问。以下是一个简单的中间件示例,用于在请求管道中检查接口是否被AllowAnonymous标记:

public class AllowAnonymousMiddleware
{
    private readonly RequestDelegate _next;

    public AllowAnonymousMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext context, IAuthorizationService authorizationService)
    {
        var endpoint = context.GetEndpoint();

        if (endpoint != null)
        {
            var allowAnonymous = endpoint.Metadata.GetMetadata<IAllowAnonymous>();

            if (allowAnonymous == null)
            {
                // 没有AllowAnonymous属性
            }
        }

        await _next(context);
    }
}

在应用程序中使用此中间件,将其添加到 Startup.cs 文件的 Configure 方法中:

public void Configure(IApplicationBuilder app)
{
	app.UseRouting();
	
	app.UseMiddleware<AllowAnonymousMiddleware>();
}

http://www.niftyadmin.cn/n/5466058.html

相关文章

python ---- %r %s格式输出的区别

在python中&#xff0c; % s和 % r是我们常用的格式符&#xff0c;它们的用法基本一致&#xff0c;但作用却不尽相同&#xff0c;下面简要说明一下两者的区别&#xff1a; 1. % s是将对象 / 变量传递到str()方法中&#xff0c;并将其转化为面向用户的可阅读的格式。 2. % r是将…

《QT实用小工具·七》CPU内存显示控件

1、概述 源码放在文章末尾 CPU内存显示控件 项目包含的功能如下&#xff1a; 实时显示当前CPU占用率。实时显示内存使用情况。包括共多少内存、已使用多少内存。全平台通用&#xff0c;包括windows、linux、ARM。发出信号通知占用率和内存使用情况等&#xff0c;以便自行显示…

OpenCV项目实战-深度学习去阴影-图像去阴影

往期热门博客项目回顾&#xff1a; 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别-3d姿态识别 深度学习小白学习路线 //正文开始&#xff01; 图…

黄金票据复现

黄金票据&#xff1a; 在AS-REP里面的ticket的encpart是使用krbtgt的hash进行加密&#xff0c;如果拥有krbtgt的hash就可以给我们自己签发任意用户的TGT票据&#xff0c;这个票据称之为黄金票据 使用Mimikatz伪造Kerberos黄金票据 Mimikatz命令&#xff1a;Kerberos&#xf…

【RedHat9.0】引导装载程序GRUB——root密码丢失实例

root用户密码忘记了&#xff1f;&#xff01;&#xff01;&#xff01;怎么办&#xff01;&#xff01;&#xff01; 在Linux系统中&#xff0c;root密码是系统管理员权限的凭证。 如果忘记了root密码&#xff0c;就无法以管理员身份登录系统&#xff0c;这可能会对系统安全和正…

【MySQL探索之旅】MySQL数据表的增删查改——约束

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更…

Mysql 和 Redis 数据怎么保持一致性,怎么实现

MySQL 和 Redis 是两种不同类型的数据库&#xff0c;MySQL 是关系型数据库&#xff0c;而 Redis 是键值存储的非关系型数据库。它们在数据一致性的保证上需要采取不同的策略&#xff0c;尤其是在分布式环境中。以下是一些保持 MySQL 和 Redis 数据一致性的常见策略&#xff1a;…

golang语言系列:学习路线图

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 golang语言系列 文章&#xff0c;主要展示golang语言学习的全路线图 参考&#xff1a;https://github.com/darius-khll/golang-developer-roadmap/blob/master/i18n/zh-CN/ReadMe-zh-CN.md