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

Asp.Net Core 鉴权授权

原文链接: https://blog.csdn.net/Fanbin168/article/details/112431155

以前我们做登陆判断是一般情况是通过实现IAuthorizationFilter 这个过滤器来做的

public class CustomAuthorizationFilterAttribute : Attribute, IAuthorizationFilter
{public void OnAuthorization(AuthorizationFilterContext context){//如果方法上面标记了AllowAnonymous特性,则跳过登录校验-以及权限检查if (context.ActionDescriptor.EndpointMetadata.Any(item => item is AllowAnonymousAttribute)){return;}string userCookie = context.HttpContext.Request.Cookies["CurrentUser"]; //获取Cookieif (userCookie == null){context.Result = new RedirectResult("/Home/Login");  //没有Cookie则跳转到登陆页面}else{return;}}
}

  控制器

namespace AuthWeb.Controllers
{//[CustomAuthorizationFilter]  //可以将自定义的过滤器写打到类上,或者将这个过滤器在Startup->Configuration方法类做全局注册public class HomeController : Controller{private readonly ILogger<HomeController> _logger;public HomeController(ILogger<HomeController> logger){_logger = logger;}public IActionResult Index(){return View();}[AllowAnonymous]public IActionResult LogIn(string name,string password){if ("Admin".Equals(name, StringComparison.CurrentCultureIgnoreCase) && password.Equals("123456"))//用户名忽略大小写比对{base.HttpContext.Response.Cookies.Append("CurrentUser", "Admin", new Microsoft.AspNetCore.Http.CookieOptions{Expires = DateTime.UtcNow.AddMinutes(1)//Cookie 30分钟过期});return new JsonResult(new { Result = true, Message = "登录成功" });}else{return new JsonResult(new { Result = false, Message = "登录失败" });}}}
}

  全局注册CustomAuthorizationFilterAttribute过滤器

public class Startup
{public Startup(IConfiguration configuration){Configuration = configuration;}public IConfiguration Configuration { get; }public void ConfigureServices(IServiceCollection services){services.AddControllersWithViews(options=> {options.Filters.Add(typeof(CustomAuthorizationFilterAttribute));//全局权限检查过滤器});}
}

  

http://www.hskmm.com/?act=detail&tid=15866

相关文章:

  • 124
  • 我的笔记记录方案
  • AT_arc156_d [ARC156D] Xor Sum 5
  • iOS Provisioning Profile 证书 描述文件
  • 计算快速付氏变换FFT前需要加窗函数
  • 直播预告| PostgreSQL 与 IvorySQL 在云原生时代的演进与实践
  • KGDB(Kernel GNU Debugger)工具使用方法详解 - 详解
  • Wallpaper Engine v2.7.3 动态壁纸软件-内含数百款动态皮肤 - 实践
  • 力扣155题 最小栈
  • Markdown语法
  • 压垮项目经理的“三座大山”:时间、成本、质量的生存法则与破局工具
  • 最新微信机器人开发教程
  • 金蝶AAS (Apusic Application Server) v10 部署SuperMap iServer 2025 详细教程
  • AI智能会话原型解析:知识问答与知识库管理的设计思路(附模版)
  • Linux - Nginx 文件访问403 forbidden = 授权 chmod -R 777 文件名称
  • 爬虫逆向--Day25Day26--原型链补环境
  • 阻抗匹配技术:信号完整性与功率传输的基石​​
  • 萝卜视频小程序管理系统:多场景适配的短视频商业解决方案
  • 栈与队列专题
  • 读书笔记:为什么你的索引“罢工”了?六种常见原因解析
  • 平面网格材质
  • OSCP备考成功指南:9大实用学习技巧
  • 设备租赁系统:建材租赁行业的高效管理解决方案
  • NOI 2025 题解
  • 迈特海外短剧多语言版 SAAS 开源系统:助力短剧出海,开启全球盈利新赛道
  • 临时测试php文件
  • csv文件中的空行问题
  • 直播点播会议一体,EasyDSS如何用一个平台解决企业所有视频难题?
  • 在 C++ 中实现反射机制并不一定必须使用宏
  • 在CodeBolcks下wxSmith的C++编程教程——使用多个表单(多窗口程序)