(4)- IdentityServer 4 权限搭建(.Net Core 3.1)

IdentityServer 4 权限概述

  • 这篇文章对其实现讲解的很清楚:https://www.cnblogs.com/stulzq/p/8726002.html
  • 想要控制角色的动态权限、菜单权限等并不适用(就目前所了解的知识:IdentityServer jwt token是为去中心化设计)
  • 仍然使用“旧方案“,自定义拓展权限认证

在Api项目新建全局自定义验证类(CustomAuthFilter.cs)

  • 不想使用全局的话,继承:AuthorizeAttribute 或 ActionFilterAttribute,其使用方式与[Authorize]一样
  • 编辑内容如下
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;

namespace SystemApi
{
    /// 
    /// 自定义身份验证    
    /// 
    /// 
    /// IdentityServer 4 的权限基于:Claims 来实现的,参考链接:https://www.cnblogs.com/stulzq/p/8726002.html
    /// 并不适合需要RBAC的权限系统
    /// 
    public class CustomAuthFilter : IAuthorizationFilter
    {
        public void OnAuthorization(AuthorizationFilterContext context)
        {
            // 通过继续
            return;

            // 未通过,返回
            dynamic x = new System.Dynamic.ExpandoObject();
            x.name = "自定义验证没有通过,权限不足!";
          

            context.Result = new JsonResult(x);
        }
    }
}

修改Api项目的StartUp.cs

  • 编辑内容如下
// 添加自定义验证
services.AddMvcCore(option =>
{
    option.Filters.Add(new CustomAuthFilter());
}).AddAuthorization();
  • 编辑内容截图展示
编辑StartUp.cs内容截图展示

Api控制器展示

  • 增加Authoriza标签后:使用IdentityServer 和 自定义验证
  • 去掉的话:只使用自定义验证(因为上面的StartUp.cs设定了全局)
Api控制器展示

使用Postman来请求验证

  • IdentityServer Token正确 && 自定义验证通过
IdentityServer Token正确 && 自定义验证通过
  • IdentityServer Token正确 && 自定义验证失败
IdentityServer Token正确 && 自定义验证失败
  • IdentityServer Token错误正确 && 自定义验证通过
IdentityServer Token错误正确 && 自定义验证通过

你可能感兴趣的:((4)- IdentityServer 4 权限搭建(.Net Core 3.1))