前言
ASP.NET Core 中 继承的是AuthorizationHandler ,而ASP.NET Framework 中继承的是AuthorizeAttribute.
它们都是用过重写里面的方法实现过滤请求的。
现在我们实现如何在 ASP.NET Core MVC 实现自定义授权。
关于AuthorizationHandler 详细介绍可以看这里
如何自定义授权
比如我们后台有个博客管理功能,那我们可以新建一个Blog的控制器,比如BlogController
里面有添加,删除,编辑等功能,分别是Add,Delete,Edit
代码如下
public class BlogController : Controller { public IActionResult Index() { return View(); } /// <summary> /// 博客添加页面 /// </summary> /// <returns></returns> public IActionResult Add() { return View(); } /// <summary> /// 博客列表页面 /// </summary> public IActionResult List() { return View(); } /// <summary> /// 博客编辑页面 /// </summary> public IActionResult Edit() { return View(); } }
如果有打印可以起个名字叫 public IActionResult Print()
自定义就是做个控制界面做勾选功能,用户根据自身业务选择。
以此类推,在ASP.NET 框架下默认路由就是Controller和Action,除非你修改默认路由,当然了你修改默认路由你的权限逻辑也得变。
实现过滤器
AuthorizationHandler 参数里面有个IAuthorizationRequirement要我们去填充,根据我们自己业务自己选择定义数据。
public class PermissionRequirement : IAuthorizationRequirement { /// <summary> /// 无权限action /// </summary> public string DeniedAction { get; set; } = "/Home/visitDeny"; /// <summary> /// 认证授权类型 /// </summary> public string ClaimType { internal get; set; } /// <sum