.Net6 WebApi基本权限控制

前言:为了保证安全性,在某些重要的接口处我们需要进行一些权限控制,毕竟在现在前后端分离的大背景下,怎么能够安心把重要的数据操作的权限交给前端呢,就更别提其他一些抗风险性了(抓包等)。
我在这里实现的其实不是太细致,主要还是用来提供一种思路吧。校验的方式是通过使用特性,所需要的Action或者Controller上面添加即可,在这方面个人比较喜欢这种方式;然后就是根据登录用户的角色来进行限制。.
  1. 首先创建一个特性类并继承自ActionFilterAttribute,然后实现以下代码
    
     
    public class RoleAttribute : ActionFilterAttribute {
    readonly string[] _role; /// <summary> /// 用户权限校验 /// </summary> /// <param name="role">可以通过的权限</param> public RoleAttribute(params string[] role) { _role = role; }
  1. 通过重载OnActionExecuting方法对权限进行校验,如果定义并传入了可通过的权限,那么如果不满足就会返回403错误

 
public override void OnActionExecuting(ActionExecutingContext context) { ITokenService tokenService = App.GetService<ITokenService>();
var tokenModel = tokenService.ParseToken(context.HttpContext); if (!_role.Contains(tokenModel.UserType)) { context.HttpContext.Response.StatusCode = 403; context.Result = new ApiJsonResult(ApiResult.Error, "权限不足!") { StatusCode=403 }; }
base.OnActionExecuting(context); }
  1. 调用,这里假设管理员的权限代码是10,那么就只有登录用户的权限是10才可以访问这个方法,如果是加到控制器上面的话就是对整个控制器进行限制。
    
     
    [Role("10")][HttpPost] public string Get() { return "Success"; }
  1. 结束