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

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


http://www.kler.cn/a/456346.html

相关文章:

  • ArcGIS Pro地形图四至角图经纬度标注与格网标注
  • 云手机群控能用来做什么?
  • docker项目部署流程(Vue+Spingboot)
  • 基于Springboot + vue实现的火锅店管理系统
  • 云计算服务中 数据的所有权是谁的
  • 逻辑控制语句
  • 设计一个基于Spring Boot开发的电商网站,部署在阿里云上
  • 【C/C++】C语言编程规范
  • pthread_create概念和使用案例
  • DeepSeek-V2:强大、经济且高效的专家混合语言模型
  • AIDD - 人工智能药物设计 -使用 Butina 模块对相似化合物进行聚类
  • vue2前端导出pdf文件
  • stm32基础(keil创建、Proteus仿真、点亮LED灯,7段数码管)
  • AI + 爬虫:智能化数据采集的未来
  • 转义特殊token is all you need
  • 已有docker镜像构建过程分析
  • Redis:高性能内存数据库的深度探索
  • 第三百四十六节 JavaFX教程 - JavaFX绑定
  • 解释为什么fetch(JavaScript)无法将读取的数据存入外部变量
  • JVM简介—JVM的执行子系统
  • 企业架构学习笔记-数字化转型
  • 华为管理变革之道:奋斗文化与活力
  • 软路由系统 iStoreOS 中部署 Minecraft 服务器
  • Redis+注解实现限流机制(IP、自定义等)
  • SqlSugar配置连接达梦数据库集群
  • C#WPF基础介绍/第一个WPF程序