IdentityServer 4 权限概述
在Api项目新建全局自定义验证类(CustomAuthFilter.cs)
- 不想使用全局的话,继承:AuthorizeAttribute 或 ActionFilterAttribute,其使用方式与[Authorize]一样
- 编辑内容如下
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
namespace SystemApi
{
/// <summary>
/// 自定义身份验证
/// </summary>
/// <remarks>
/// IdentityServer 4 的权限基于:Claims 来实现的,参考链接:https://www.cnblogs.com/stulzq/p/8726002.html
/// 并不适合需要RBAC的权限系统
/// </remarks>
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();
Api控制器展示
- 增加Authoriza标签后:使用IdentityServer 和 自定义验证
- 去掉的话:只使用自定义验证(因为上面的StartUp.cs设定了全局)
使用Postman来请求验证
- IdentityServer Token正确 && 自定义验证通过
IdentityServer Token正确 && 自定义验证通过
- IdentityServer Token正确 && 自定义验证失败
IdentityServer Token正确 && 自定义验证失败
- IdentityServer Token错误正确 && 自定义验证通过
IdentityServer Token错误正确 && 自定义验证通过