ASP.NET Core WebApi使用ActionFilterAttribute过滤器
2020-12-30 04:27
标签:ext rac val 标识 返回 string return oid new 为保护接口安全性,过滤非法请求来源,本篇博客介绍如何在 ASP.NET Core WebApi 中使用 ActionFilterAttribute 过滤器过滤非法请求。 基本思路:前端在请求头中加入加密后的 Token 和 TimeSpan 两个字段,Token前后端保持一致,加密方法、密钥、向量前后端保持一致,后端在接收到加密的两个字段后解密进行验证,如果来源合法,则返回接口数据,否则给出警告提示。 tips:为提高安全性,密钥与向量应配置在appsetting.json文件中再封装方法获取,本篇博客为简化代码未配置。 在需要过滤的 Controller 中加入【MyApiFilter】标识 在请求头中加入timespan和token字段 End! ASP.NET Core WebApi使用ActionFilterAttribute过滤器 标签:ext rac val 标识 返回 string return oid new 原文地址:https://www.cnblogs.com/gygg/p/13279688.html一、配置 appsettings.json 文件
"BaseInfo": {
"WeXinToken": "dieidkdlalsd",
"CbcKey": "j67aso1dfle3ja45",
"CbcIv": "2jas5odf7lej6aop"
}
二、新建 MyApiFilter 类,重写 OnActionExecuting 方法,过滤非法来源
public class MyApiFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
try
{
//获取请求头中的Token和TimeSpan
var token = context.HttpContext.Request.Headers["Token"].ToString();
var timespan = context.HttpContext.Request.Headers["TimeSpan"].ToString();
//验证timespan和token
if (CheckFromIsRight(timespan, token))
{
base.OnActionExecuting(context);
}
else
{
context.Result = new JsonResult("请求来源非法");
}
}
catch (Exception)
{
context.Result = new JsonResult("请求来源非法");
}
}
public static bool CheckFromIsRight(string timespan, string token)
{
bool result = false;
if (!string.IsNullOrEmpty(timespan) && !string.IsNullOrEmpty(token))
{
try
{
//时间差小于两分钟
if (ConvertToTimeFromSpan(MySecret.CbcDecrypt(timespan)).Subtract(DateTime.Now).Minutes
三、新建 MySecret 类,用于加密解密
public class MySecret
{
//密钥与向量,与前端保持一致
private static readonly string cbckey = "j67aso1dfle3ja45";
private static readonly string cbciv = "2jas5odf7lej6aop";
///
四、使用过滤器
请求来源合法,返回接口数据
否则返回警告提示
上一篇:IIS启用JSON压缩
文章标题:ASP.NET Core WebApi使用ActionFilterAttribute过滤器
文章链接:http://soscw.com/index.php/essay/39200.html