当前位置: 首页 > news >正文

学习ASP.NET Core的身份认证(基于Session的身份认证3)

  开源博客项目Blog中提供了另一种访问控制方式,其基于自定义类及函数的特性类控制访问权限。本文学习并测试开源博客项目Blog的访问控制方式,测试程序中直接复用开源博客项目Blog中的相关类及接口定义,并在其上调整判断逻辑。
  首先是接口AllowAccessAttribute,用于标识函数是否需要访问控制。

[AttributeUsage(AttributeTargets.Method)]
public class AllowAccessAttribute : Attribute
{}

  然后定义特定类AuthorizationAttribute ,用于标识并处理指定控制器类的访问控制,在类中实现OnAuthorization函数,这里调整了原博客项目Blog的访问控制逻辑(Blog项目使用基于Cookie的身份认证,其在函数内使用HttpContext.User相关信息进行登录判断),函数的输入参数AuthorizationFilterContext中包含有待访问的控制器类及函数信息(如下截图所示),可以据此做更详细的访问控制。

public class AuthorizationAttribute : Attribute, IAuthorizationFilter
{public void OnAuthorization(AuthorizationFilterContext context){bool ignore = ((ControllerActionDescriptor)context.ActionDescriptor).MethodInfo.GetCustomAttributes(false).Any(f => f is AllowAccessAttribute);if (!ignore){if (!context.HttpContext.Session.IsAvailable ||string.IsNullOrEmpty(context.HttpContext.Session.GetString("user"))){context.Result= new RedirectToRouteResult(new RouteValueDictionary{{ "controller", "Account" },{ "action", "Login" }     });return;}}}
}

在这里插入图片描述

  在测试项目中的使用示例如下所示,最终程序的运行效果是访问Home/Privacy可以直接看到页面,放在Home/Index的话,如果没有登录则跳转到登录页面。

[Authorization]
public class HomeController : Controller
{public IActionResult Index(){ViewData.Add("CurUser", HttpContext.Session.GetString("user"));return View();}[AllowAccess]public IActionResult Privacy(){return View();}
}

参考文献:
[1]https://www.cnblogs.com/boonya/p/18557417
[2]http://www.pzhseo.com/article/dipjeg.html
[3]https://cloud.tencent.com/developer/article/1783650
[4]https://blog.csdn.net/ousetuhou/article/details/135392012
[5]https://blog.51cto.com/u_16213593/11106992
[6]https://blog.csdn.net/weixin_30371469/article/details/97157033

相关文章:

学习ASP.NET Core的身份认证(基于Session的身份认证3)

开源博客项目Blog中提供了另一种访问控制方式,其基于自定义类及函数的特性类控制访问权限。本文学习并测试开源博客项目Blog的访问控制方式,测试程序中直接复用开源博客项目Blog中的相关类及接口定义,并在其上调整判断逻辑。   首先是接口A…...

速盾:高防 CDN 可以配置客户端请求超时配置?

在高防 CDN(Content Delivery Network,内容分发网络)的运行管理中,客户端请求超时配置是一项重要的功能设定,它对于优化网络资源分配、保障服务质量以及维护系统稳定性有着关键意义。 一、客户端请求超时配置的概念 …...

DRM(数字权限管理技术)防截屏录屏----ffmpeg安装

提示:ffmpeg安装 文章目录 [TOC](文章目录) 前言一、下载二、配置环境变量三、运行ffmpeg四、文档总结 前言 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的…...

使用PyQt5开发一个GUI程序的实例演示

一、安装Python 下载安装到这个目录 G:\Python38-32 安装完成有这些工具,后面备用: G:\Python38-32\Scripts\pyrcc5.exe G:\Python38-32\Scripts\pyuic5.exe 二、PyQt环境配置 pip install PyQt5 pip install pyqt5-tools 建议使用国内源&#xff0c…...

【VUE3】【Naive UI】<NCard> 标签

【Vue3】【Naive UI】 标签 title 属性bordered 属性header-style 和 body-style 属性footer 属性actions 属性hoverable 属性loading 属性size 属性type 属性cover 和 avatar 属性description 属性style 属性 【VUE3】【Naive UI】<NCard> 标签 【VUE3】…...

选择排序之大根堆

大根堆:树的根节点大于左右子树的结点值,这样就能保证每次从树根取的是最大值 灵魂在于HeadAdjust函数,以某节点为树根通过下落调整为大根堆, 建树思想 就是,从最后一个非终端结点开始调整以该结点为根的子树&#x…...

AI的魔力:如何为开源软件注入智慧,开启无限可能

“AI的魔力:如何为开源软件注入智慧,开启无限可能” 引言: 在科技发展的浪潮中,开源软件生态一直扮演着推动创新与共享的重要角色。从Linux到Python,开源项目赋予了开发者全球协作的机会,推动了技术的飞速…...

如何在 VPS 上使用 Git 设置自动部署

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 介绍 要了解 Git 的基本知识以及如何安装,请参考介绍教程。 本文将教你如何在部署应用程序时使用 Git。虽然有许多使用 Gi…...

Linux下的三种 IO 复用

目录 一、Select 1、函数 API 2、使用限制 3、使用 Demo 二、Poll 三、epoll 0、 实现原理 1、函数 API 2、简单代码模板 3、LT/ET 使用过程 (1)LT 水平触发 (2)ET边沿触发 4、使用 Demo 四、参考链接 一、Select 在…...

通过 SSH 进行WordPress网站的高级服务器管理

我在管理hostease的服务器时,时常需要通过SSH登录服务器进行修改。而在网站管理中,SSH不仅是一个基础工具,更是高级用户用来精细化管理和优化服务器的重要工具。通过SSH,你可以深入监控服务器的性能、精细管理系统资源&#xff0c…...

速盾高防cdn支持移动端独立缓存

随着移动互联网的快速发展,移动端网页访问量也越来越大。然而,移动端的网络环境相对不稳定,用户体验可能会受到影响。因此,使用高防CDN来加速移动端网页访问,成为越来越多网站运营者的首选。 速盾高防CDN是一种分布式…...

PMP–一、二、三模、冲刺–分类–8.质量管理

文章目录 技巧五、质量管理 一模8.质量管理--质量管理计划--质量管理计划包括项目采用的质量标准,到底有没有满足质量需求,看质量标准即可。6、 [单选] 自项目开始以来,作为项目经理同事的职能经理一直公开反对该项目,在讨论项目里…...

如何快速使用Unity 的UPR---1资源检测保姆级

关于我们的性能检测工具已经有很多了,比如UWA的或者是我们的Unity 的UPR 都是很好的,今天说一下UPR吧 官方网址 :UPR - Unity专业性能优化工具 这个是官方给的Demo 选择你的平台就可以 这个可以作为一个参考但是不是很建议用官方的因为我们…...

pytorch中的.clone() 和 .detach()

在PyTorch中,.clone() 和 .detach() 是两个用于处理张量(Tensor)的方法,它们各自有不同的用途: .clone(): .clone() 方法用于创建一个张量的副本(深拷贝)。这意味着原始张量和新张量…...

三十二:网络爬虫的工作原理与应对方式

随着互联网的快速发展,网络爬虫(Web Crawlers)作为一种自动化工具,被广泛应用于搜索引擎、数据采集、网站监控等领域。网络爬虫的作用是通过自动化程序,模拟人类浏览网页的行为,自动下载和解析网页内容&…...

nodejs相关知识介绍

1、nodejs官方文档: https://nodejs.org/zh-cn nodejs可以用nvm进入安装; 2、npm说明: npm官方教程:https://npm.p2hp.com/ npm是 Node.js 的标准包管理器,也就是说nodejs安装好,npm也就安装好了&#…...

MySQL排它锁

MySQL排它锁原理 MySQL中的排它锁(Exclusive Lock),也称为独占锁,是一种确保在事务期间,其他事务无法对锁定数据进行读取或修改的锁机制。当一个事务对某一行数据加上排它锁后,其他事务无法对该行数据进行…...

HarmonyOS4+NEXT星河版入门与项目实战(22)------动画(属性动画与显示动画)

文章目录 1、属性动画图解2、案例实现-小鱼移动游戏1、代码实现2、代码解释3、资源图片4、实现效果3、显示动画4、案例修改-显示动画5、总结1、属性动画图解 这里我们用一张完整的图来汇整属性动画的用法格式和使用的主要属性范围,如下所示: 2、案例实现-小鱼移动游戏 1、代…...

Vue3 Ts 如何获取组件的类型

vue3 Ts ref 子组件 1、默认写法 typeof&#xff1a;获取ts类型 InstanceType&#xff1a;获取模版的实例 <tempolate><myComponent ref"myCompRef"> </tempolate><script setup lang"ts"> import { ref } from "vue&quo…...

RAG数据拆分之PDF

引言RAG数据简介PDF解析方法及工具代码实现总结 二、正文内容 引言 本文将介绍如何将RAG数据拆分至PDF格式&#xff0c;并探讨PDF解析的方法和工具&#xff0c;最后提供代码示例。 RAG数据简介 RAG&#xff08;关系型属性图&#xff09;是一种用于表示实体及其关系的图数据…...

华大半导体HC32F4A0实战:基于USART1与DMA的RS485高效通信框架解析

1. HC32F4A0与RS485通信基础 第一次接触华大半导体的HC32F4A0芯片时&#xff0c;我完全被它丰富的功能吸引了。这款基于ARM Cortex-M4内核的MCU&#xff0c;在工业控制领域表现非常出色。今天我要分享的是如何在这款芯片上实现高效的RS485通信方案&#xff0c;特别适合需要稳定…...

SAP销售单文本处理保姆级教程:用SAVE_TEXT和READ_TEXT BAPI搞定抬头备注

SAP销售单文本处理实战指南&#xff1a;从业务需求到代码实现的完整闭环 销售订单处理过程中&#xff0c;文本信息承载着关键业务逻辑——加急标识、特殊包装要求、客户备注等非结构化数据往往决定了后续物流和财务流程的准确性。当这些信息在流转中丢失时&#xff0c;轻则导致…...

别再让UDP丢包坑了你!手把手教你用C语言实现应用层分包组包(附完整代码)

从零构建高可靠UDP传输&#xff1a;C语言实现应用层分包组包实战指南 在实时音视频、在线游戏等对延迟极度敏感的领域&#xff0c;UDP协议因其无连接、低开销的特性成为首选。但许多开发者第一次使用UDP发送大文件时都会遇到这样的场景&#xff1a;明明局域网测试一切正常&…...

设计专利实战指南:从概念到风险防控,硬件工程师必读

1. 从“喷气式冲浪板”看设计专利的迷思与实战那天在翻看一些老旧的行业资料时&#xff0c;我又看到了那篇经典的“What were they thinking: Jet powered surfboard”。每次看到这个标题和那张滑稽的专利图&#xff0c;都让我忍不住会心一笑。一张图纸&#xff0c;寥寥数语&am…...

visionOS开发实战:从示例项目到空间应用构建全指南

1. 从零到一&#xff1a;如何高效利用 visionOS 示例项目库如果你和我一样&#xff0c;是个对 Apple Vision Pro 和 visionOS 开发充满好奇的开发者&#xff0c;那么你肯定经历过这样的阶段&#xff1a;面对一个全新的平台&#xff0c;既兴奋于其无限的可能性&#xff0c;又对如…...

企业级AI低代码平台kweaver-dip:架构解析与工作流实战

1. 项目概述&#xff1a;一个面向企业级AI应用开发的低代码平台 最近在和一些做企业数字化转型的朋友聊天&#xff0c;大家普遍提到一个痛点&#xff1a;AI能力很强&#xff0c;但想把它真正用起来&#xff0c;门槛实在太高了。不是每个团队都有能力养一支算法工程师队伍&#…...

Notflix高级技巧:5种高效搜索和流媒体传输方法

Notflix高级技巧&#xff1a;5种高效搜索和流媒体传输方法 【免费下载链接】notflix Notflix is a shell script to search and stream torrent. 项目地址: https://gitcode.com/gh_mirrors/no/notflix Notflix是一款强大的shell脚本工具&#xff0c;能够帮助用户快速搜…...

BepInEx IL2CPP启动失败终极解决指南:从异常诊断到游戏正常运行

BepInEx IL2CPP启动失败终极解决指南&#xff1a;从异常诊断到游戏正常运行 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx作为Unity游戏插件框架&#xff0c;为玩家和开发…...

Navicat Mac版无限重置试用期的终极指南:3种简单方法破解14天限制

Navicat Mac版无限重置试用期的终极指南&#xff1a;3种简单方法破解14天限制 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac …...

不开刀、少痛苦!拱墅区这家公立肿瘤专科,中西医结合守护生命希望

面对肿瘤&#xff0c;你是否还在恐惧开刀创伤、担忧放化疗副作用&#xff1f;杭州市拱墅区人民中西医结合医院肿瘤一科&#xff0c;作为公立二级甲等医院重点专科&#xff0c;以 “微创消瘤、中西扶正” 为核心&#xff0c;走出一条低损伤、高疗效的抗癌新路&#xff0c;为无数…...