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

ASP.NET MVC实战之权限拦截Authorize使用

1,具体的实现方法代码如下

 public class CustomAuthorizeAttribute : FilterAttribute, IAuthorizationFilter{/// <summary>/// 如果需要验证权限的时候,就执行进来/// </summary>/// <param name="filterContext"></param>public void OnAuthorization(AuthorizationContext filterContext){//1.验证是否登录过object ouser = filterContext.HttpContext.Session[CacheConstant.CacheCurrentUser()];if (ouser == null || (ouser is CurrentUser) == false) //取到session或者取到的session不是CurrentUser---没有登录{ResponseResult(filterContext);}else{//就要取出当前用户的信息,通过用户信息判断,当前这个用户是否能够访问当前要访问的功能  CurrentUser currentUser = (CurrentUser)ouser;List<Tuple<string, string, string>> tupMen = currentUser.TupMenue;List<string> currentUserUrlList = tupMen.Select(c => c.Item3).Where(c => !string.IsNullOrWhiteSpace(c)).Select(c => c.ToUpper()).ToList();object ObjectControllerName = filterContext.HttpContext.Request.RequestContext.RouteData.Values["controller"];string controllerName = ObjectControllerName.ToString().ToUpper();int count = currentUserUrlList.Count(c => c.Contains(controllerName));if (count <= 0){if (filterContext.HttpContext.Request.IsAjaxRequest()) //Ajax请求{filterContext.Result = new JsonResult(){Data = new AjaxResult(){Success = false,Message = "对不起,当前功能你没有权限访问"}};}else //非Ajax请求{filterContext.Result = new RedirectResult("/Home/UnAuthorize");}}}}/// <summary>/// 没有Session的响应/// </summary>/// <param name="filterContext"></param>private static void ResponseResult(AuthorizationContext filterContext){if (filterContext.HttpContext.Request.IsAjaxRequest()) //Ajax请求{filterContext.Result = new JsonResult(){Data = new AjaxResult(){Success = false,Message = "没有登录,无法获取数据"}};}else //非Ajax请求{filterContext.Result = new RedirectResult("Account/Login");}}

2,具体在控制器引用权限认证方法

http://www.lryc.cn/news/262151.html

相关文章:

  • java8实战 lambda表达式和函数式接口(上)
  • 深度学习中的13种概率分布
  • C#基础知识 - 操作数与运算符篇2
  • 第十五章总结
  • 音频I2S
  • 小程序中的合法域名的作用及条件有哪些?
  • SpringData JPA 整合Springboot
  • 打工人副业变现秘籍,某多/某手变现底层引擎-Stable Diffusion 黑白老照片上色修复
  • 第十三章总结
  • 大模型应用_PrivateGPT
  • [Android] ubuntu虚拟机上搭建 Waydroid 环境
  • LeedCode刷题---滑动窗口问题(二)
  • pycharm依赖管理(不要用pip freeze)
  • [Kafka 常见面试题]如何保证消息的不重复不丢失
  • Java中System.setProperty()用法
  • Eclipse 自动生成注解,如果是IDEA可以参考编译器自带模版进行修改
  • 微信小程序vant安装使用过程中遇到无法构建npm的问题
  • [python]用python获取EXCEL文件内容并保存到DBC
  • Spring Boot 如何配置 log4j2
  • 如何安装docker
  • Linux 之 性能优化
  • 用Go汇编实现一个快速排序算法
  • Spring-整合MyBatis
  • sql宽字节注入
  • 开源 LLM 微调训练指南:如何打造属于自己的 LLM 模型
  • Android hilt使用
  • 2023/12/17 初始化
  • 【算法Hot100系列】三数之和
  • CSS 简介
  • myBatis-plus自动填充插件