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

ShenNiusModularity项目源码学习(6:访问控制)

  ShenNius.Admin.API项目中的控制器类的函数如果需要访问控制,主要是调用ShenNius.Infrastructure项目下的AuthorityAttribute特性类实现的。AuthorityAttribute继承自ActionFilterAttribute抽象类,后者用于在调用控制器操作函数前后自定义处理逻辑,主要支持以下几种事件。AuthorityAttribute类重写了OnActionExecuting事件处理函数,用于在调用控制器类的函数前进行访问控制检查。
**加粗样式**
  访问控制的整体思路还是先检查是否登录用户,然后再根据当前用户权限判断是否能调用当前控制器的指定函数。具体如下:
  1)根据当前上下文中的User.Identity.IsAuthenticated属性判断是否为登录用户,未登录则不允许访问;
  2)如果是DEBUG模式,且当前用户有管理员权限,则不需要访问控制。通过在上下文的User.Claims查找是否有主键为IsAdmin且值为1的数据。但是从源码来看,MVC模式下调用ShenNius.Admin.Mvc的UserController.Login函数登录时用户声明中有IsAdmin信息,但在前后端分类模式下,调用ShenNius.Admin.API的UserController.SignIn函数登录时暂时没有看到设置IsAdmin声明信息的代码;
  3)从函数输入参数中调用ActionExecutingContext.ActionDescriptor. RouteValues获取要访问的控制器类及函数,再从上下文中获取当前用户标识及权限缓存,依次判断当前用户是否有权限访问,但有特例,如果函数名为GetListPages则直接放过。如果是MVC模式,则在用户登录函数中登录验证通过后,会调用MenuRepository.GetCurrentAuthMenus函数获取当前用户权限并返回前端。但是在前后端分类模式下,暂时没有看到是在什么时候获取并保存的当前用户权限。

在这里插入图片描述

参考文献:
[1]https://gitee.com/shenniu_code_group/shen-nius.-modularity

相关文章:

ShenNiusModularity项目源码学习(6:访问控制)

ShenNius.Admin.API项目中的控制器类的函数如果需要访问控制,主要是调用ShenNius.Infrastructure项目下的AuthorityAttribute特性类实现的。AuthorityAttribute继承自ActionFilterAttribute抽象类,后者用于在调用控制器操作函数前后自定义处理逻辑&#…...

STM32F103RCT6学习之三:串口

1.串口基础 2.串口发送 1)基本配置 注意:实现串口通信功能需在keil中设置打开Use Micro LIB,才能通过串口助手观察到串口信息 2)编辑代码 int main(void) {/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration-------------…...

js 计算税率错误——如何处理

处理方法 var 税额Number(price_notax)*Number(tax_rate)/100;税额税额.toFixed(2);var 含税单价Number(price_notax)Number(税额);var 非小计Number(price_notax)*Number(common_num);var 含税小计Number(含税单价)*Number(common_num);含税小计含税小计.toFixed(2); 税额税额…...

12. 日常算法

1. 主持人调度&#xff08;一&#xff09; 题目来源 class Solution { public:bool hostschedule(vector<vector<int>>& schedule) {// write code heresort(schedule.begin(), schedule.end());int start -1, end 0;for (auto & nums : schedule){end…...

HarmonyOS Next 实现登录注册页面(ARKTS) 并使用Springboot作为后端提供接口

1. HarmonyOS next ArkTS ArkTS围绕应用开发在 TypeScript &#xff08;简称TS&#xff09;生态基础上做了进一步扩展&#xff0c;继承了TS的所有特性&#xff0c;是TS的超集 ArkTS在TS的基础上扩展了struct和很多的装饰器以达到描述UI和状态管理的目的 以下代码是一个基于…...

咖啡即将“从天而降”,无人机外卖时代来袭

如今&#xff0c;在我国的一些城市&#xff0c;无人机配送咖啡已经从设想变为现实&#xff0c;开启了商业化的初步尝试。 当咖啡遇上无人机&#xff0c;奇妙场景开启 想象一下这样的画面&#xff1a;你在户外的露营地&#xff0c;慵懒地躺在帐篷里&#xff0c;或是在城市公园…...

kettle经验篇:Pentaho Repository 类型资源库卡顿问题

2024年马上就结束了&#xff0c;终于在结束前解决了困扰许久的一个问题&#xff1a;kettle的Pentaho Repository 资源库异常卡顿。所以在此也梳理、记录下2024年的最后一个大问题。 项目场景 工作中一个重要内容是数据中心项目&#xff0c;也就必不可少的要用到ETL技术&#x…...

python opencv的sift特征检测(Scale-Invariant Feature Transform)

sift 官方文档地址&#xff1a;https://docs.opencv.org/4.10.0/da/df5/tutorial_py_sift_intro.html 创建SIFT实例cv2.SIFT.create()特征检测sift.detect描述子sift.compute/sift.detectAndCompute画特征cv2.drawKeypoints 原图 特征点 代码 import cv2first ./12.pngsif…...

若依定时任务

表结构 目录 quartz框架 SysJobServiceImpl实现类 使用切点,在构造器执行的时候执行定时任务的构建(这个类是交给IOC容器的,所以这个时间点就是项目启动的时候)SysJobServiceImpl实现类的init方法创建任务 /*** 创建定时任务*/public static void createScheduleJob(Scheduler …...

k8s-node2 NotReady 节点NotReady如何解决?

从集群中移除 k8s-node2 [rootk8s-master ~]# kubectl delete node k8s-node2 node "k8s-node2" deleted重置 k8s-node2 登录到 k8s-node2 上&#xff0c;使用以下命令重置该节点&#xff0c;使其退出集群并恢复到初始状态&#xff1a; [rootk8s-node2 ~]# sudo k…...

Ubuntu通过mDNS实现局域网local域名和octoprint域名访问

OctoPrint是一个开源的3D打印机控制软件&#xff0c;它提供了一个Web界面&#xff0c;允许用户远程监控和管理3D打印机。通过USB连接到打印机后&#xff0c;用户可以使用任何带有Web浏览器的设备来控制打印作业&#xff0c;包括开始、停止、暂停打印&#xff0c;以及在打印过程…...

短视频矩阵账号管理技术源码搭建详解,支持OEM

一、引言 在短视频矩阵系统中&#xff0c;账号管理是至关重要的一环&#xff0c;它涉及到多平台账号的接入、用户信息的安全存储与高效管理、权限的精准控制以及账号数据的同步与更新等关键功能。一个健壮、灵活且安全的账号管理技术架构&#xff0c;能够为整个短视频矩阵系统的…...

【源码 导入教程 文档 讲解】基于springboot校园新闻管理系统源码和论文

可做计算机毕业设计JAVA、PHP、爬虫、APP、小程序、C#、C、python、数据可视化、大数据、文案 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xf…...

Spark SQL DML语句

【图书介绍】《Spark SQL大数据分析快速上手》-CSDN博客 《Spark SQL大数据分析快速上手》【摘要 书评 试读】- 京东图书 Spark本地模式安装_spark3.2.2本地模式安装-CSDN博客 DML&#xff08;Data Manipulation Language&#xff0c;数据操作语言&#xff09;操作主要用来对…...

开发微信小程序的过程与心得

起因 作为家长&#xff0c;我近期参与了学校的护学岗工作。在这个过程中&#xff0c;我发现需要使用水印相机来记录护学活动&#xff0c;但市面上大多数水印相机应用都要求开通会员才能使用完整功能。作为一名程序员&#xff0c;我决定利用自己的技术背景&#xff0c;开发一个…...

【1224】数据结构(sizeof/数组的长度定义/读取字符串函数/线性表长度/左值右值/静态变量/指针与引用)

1.对一维整型数组a的正确说明是 #define SIZE 10 (换行) int a[SIZE];说法是否正确&#xff1f; 正确 数组的SIZE可以用宏定义&#xff0c;但不能用变量 2.如有定义&#xff1a;char str[20];&#xff0c;能将从键盘输入的字符串“How are you”保存到 str 数组的语句是&#x…...

Android笔记(四十一):TabLayout内的tab不滚动问题

背景 假设二级页面是上面图片的布局&#xff0c;当进来时TabLayout和ViewPager2绑定完就马上调setCustomItem&#xff0c;跳转到最后一个tab页面时&#xff0c;会发现tab不滚动&#xff0c;手动滑一下ViewPager2时才会滚动tab到正确的位置 原因分析 调用TabLayoutMediator.at…...

基于pytorch的深度学习基础3——模型创建与nn.Module

三 模型创建与nn.Module 3.1 nn.Module 模型构建两要素&#xff1a; 构建子模块——__init()__拼接子模块——forward&#xff08;&#xff09; 一个module可以有多个module&#xff1b; 一个module相当于一个运算&#xff0c;都必须实现forward函数&#xff1b; 每一个mod…...

Debian-linux运维-docker安装和配置

腾讯云搭建docker官方文档&#xff1a;https://cloud.tencent.com/document/product/213/46000 阿里云安装Docker官方文档&#xff1a;https://help.aliyun.com/zh/ecs/use-cases/install-and-use-docker-on-a-linux-ecs-instance 天翼云常见docker源配置指导&#xff1a;htt…...

Docker完整技术汇总

Docker 背景引入 在实际开发过程中有三个环境&#xff0c;分别是&#xff1a;开发环境、测试环境以及生产环境&#xff0c;假设开发环境中开发人员用的是jdk8&#xff0c;而在测试环境中测试人员用的时jdk7&#xff0c;这就导致程序员开发完系统后将其打成jar包发给测试人员后…...

微信聊天记录导出终极指南:免费工具WeChatExporter完整使用教程

微信聊天记录导出终极指南&#xff1a;免费工具WeChatExporter完整使用教程 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否担心珍贵的微信聊天记录会因手机更换或…...

OFA图像语义蕴含模型效果展示:漫画分镜图+剧情假设的叙事逻辑连贯性验证

OFA图像语义蕴含模型效果展示&#xff1a;漫画分镜图剧情假设的叙事逻辑连贯性验证 1. 引言&#xff1a;当漫画遇上AI逻辑验证 你有没有过这样的经历&#xff1f;看漫画时突然发现前后剧情对不上&#xff0c;或者某个分镜的画面和对话明显矛盾&#xff1f;这种叙事逻辑的不连…...

2026年企业AI HR选型实用手册

导读&#xff1a;这份2026年企业AI HR选型实用手册由eRoad易路出品&#xff0c;核心围绕AI技术与人力资源管理的深度融合&#xff0c;提出以“搭子”方法论打造企业落地AI HR的最短路径&#xff0c;展现了从技术应用到产业落地的HR智能化进化方向。关注公众号&#xff1a;【互联…...

基于SpringBoot + Vue的新农村信息平台建设(角色:企业村民村委会管理员)

文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 &#x1f49b;博主介绍&#…...

手把手教你用Python写一个高效图片爬虫(附代码+反爬策略)

大家好&#xff01;今天分享一个我近期开发的Python图片爬虫程序&#xff0c;适合新手入门和进阶学习。项目包含多线程下载、反反爬机制、数据存储等核心功能&#xff0c;代码已开源并附详细注释。 一、项目背景 在数据采集场景中&#xff0c;图片下载是常见需求。但目标网站…...

新手前端第一课:在快马平台用ai生成一个属于自己的“notepad++”

作为一个刚接触前端开发的新手&#xff0c;我最近在InsCode(快马)平台上尝试做了一个简易版的文本编辑器&#xff0c;感觉特别适合用来理解基础的前端开发逻辑。整个过程就像搭积木一样有趣&#xff0c;现在把学习心得分享给大家。 项目构思阶段 我想做一个类似notepad的简易编…...

字节Agent开发岗面试血泪史:ReAct框架、IterResearch架构、训练流程全解析,小白必看!收藏!

字节Agent开发岗面试血泪史&#xff1a;ReAct框架、IterResearch架构、训练流程全解析&#xff0c;小白必看&#xff01;收藏&#xff01; 文章通过字节Agent开发岗校招面试实例&#xff0c;揭示候选人因缺乏底层逻辑和工程实现细节而失败。详细解析ReAct框架、IterResearch架构…...

【第四周】论文精读:RAG4DMC:用于数据级模态补全的检索增强生成

前言&#xff1a;在多模态应用中&#xff0c;数据往往面临“模态缺失”的窘境&#xff08;如仅有图片无文字&#xff0c;或仅有文字无图片&#xff09;&#xff0c;这严重限制了模型的训练与应用。虽然预训练生成模型&#xff08;如 Diffusion、LLM&#xff09;看似是天然的解法…...

浦语灵笔2.5-7B实战落地:3个行业客户在6个月内完成POC到上线

浦语灵笔2.5-7B实战落地&#xff1a;3个行业客户在6个月内完成POC到上线 1. 项目背景与价值 在当今AI技术快速发展的时代&#xff0c;多模态视觉语言模型正在成为企业智能化转型的重要工具。浦语灵笔2.5-7B作为上海人工智能实验室开发的多模态视觉语言大模型&#xff0c;凭借…...

Wan2.2-I2V-A14B效果展示:10秒1080P高清视频生成作品集(RTX4090D实测)

Wan2.2-I2V-A14B效果展示&#xff1a;10秒1080P高清视频生成作品集&#xff08;RTX4090D实测&#xff09; 1. 专业级视频生成效果惊艳亮相 Wan2.2-I2V-A14B文生视频模型在RTX4090D显卡上的表现令人印象深刻。经过深度优化的私有部署镜像&#xff0c;能够稳定生成10秒1080P高清…...