实现 ApiAuthorizeAction 自定义类:
public class ApiAuthorizeAction : Attribute,IAuthorizationFilter
{
public void OnAuthorization(AuthorizationFilterContext context)
{
if (context == null)
return;
var token = context.HttpContext.Request.Headers["token"];
if (string.IsNullOrWhiteSpace(token))
{
context.Result = new ApiResult(OperateCode.Api_无效的access_token,"请求头token不可以为空");//OperateCode为自定义的返回code,可以自行替换
return;
}
var redisData = RedisHelper.StringGet(token);//redis缓存,存储登录用户信息 使用token作为key
if (string.IsNullOrWhiteSpace(redisData))
{
context.Result = new ApiResult(OperateCode.Api_无效的access_token, "无效的授权信息或者授权信息已经过期");
return;
}
}
}
在控制器中使用:
[ApiController]
[Route("api/[controller]/[action]")]
[ApiAuthorizeAction]//api登录校验
public class AdminUserDataController : BaseApiController //举例
原理:在每次进行API访问时会优先进入 ApiAuthorizeAction.OnAuthorization 中进行登录校验,校验传入的token是否合法。也可以通过该方法进行权限的校验扩展
标签:WebApi,core,登录,校验,OperateCode,ApiAuthorizeAction,token,context,net From: https://www.cnblogs.com/yeshuanyi/p/17579084.html