作用:
可限制该方法允许的请求类型,允许标识多个。 如果方法没有标记,即默认允许所有请求类型。
对于控制器的方法,只需要标识上对应的属性标签,示例使用:
public class MSController : Controller
{ /// <summary>
/// Get or Post 测试 /// </summary>
/// <param name="msg">post 消息</param>
/// <param name="file" type="file">file</param> [HttpGet]
[HttpPost] public void Hello(string msg, System.Web.HttpPostedFile file)
{ //MicroService.Const.HeaderKey
if (file != null)
{
file.SaveAs(file.FileName);
} if (Request.UrlReferrer != null)
{
Write("From : " + Request.UrlReferrer.ToString() + "\r\n");
}
Write("MicroService : " + MicroService.Config.AppRunUrl + Request.Url.LocalPath + " : " + Request.HttpMethod + " : " + msg ?? "Hello" + MicroService.Config.ServerName);
}
}
说明:
仅允许Get或Post两种请求方式。
作用:
1、实现自定义:控制请求频率。2、实现自定义:黑名单过滤。3、实现自定义:过滤无效的攻击请求。
该标识通常要求发起请求者在请求头传递ack=xxx值,以便API获取该值并进行分析判断。
示例使用:
public class MSController : Controller
{ public override bool CheckAck()
{ string ack = Query<string>("ack"); //1、IP黑名单判断。 //2、重复请求判断:检测该标识是否请求过了。 //3、IP请求频繁检测:判断是否攻击请求。
return 判断后的结果,false禁止继续执行,true则继续;
} /// <summary>
/// Get or Post 测试 /// </summary>
/// <param name="msg">post 消息</param>
/// <param name="file" type="file">file</param> [HttpGet]
[HttpPost]
[Ack] public void Hello(string msg, System.Web.HttpPostedFile file)
{ //MicroService.Const.HeaderKey
if (file != null)
{
file.SaveAs(file.FileName);
} if (Request.UrlReferrer != null)
{
Write("From : " + Request.UrlReferrer.ToString() + "\r\n");
}
Write("MicroService : " + MicroService.Config.AppRunUrl + Request.Url.LocalPath + " : " + Request.HttpMethod + " : " + msg ?? "Hello" + MicroService.Config.ServerName);
}
}
该标识可以标识在方法,或者类属性上,对于标识上Ack的方法,会触发CheckAck方法。
作用区域:
1、局部控制器内生效:重载CheckAck方法即可。2、全局生效:在全局控制器DefaultController中的全局事件CheckAck方法实现。
对于安全的处理代码,框架没有提供,有需要可自己实现。
作用:
作为账号登陆后,传递账号信息用于校验与获取信息使用。
该标识通常要求发起请求者在请求头传递token=xxx值,以便API获取该值并进行分析判断。
示例:
public class MSController : Controller
{ public override bool CheckToken()
{ string token = Query<string>("token"); //进行安全验证
return base.CheckToken();
} /// <summary>
/// Get or Post 测试 /// </summary>
/// <param name="msg">post 消息</param>
/// <param name="file" type="file">file</param> [HttpGet]
[HttpPost]
[Token] public void Hello(string msg, System.Web.HttpPostedFile file)
{ //MicroService.Const.HeaderKey
if (file != null)
{
file.SaveAs(file.FileName);
} if (Request.UrlReferrer != null)
{
Write("From : " + Request.UrlReferrer.ToString() + "\r\n");
}
Write("MicroService : " + MicroService.Config.AppRunUrl + Request.Url.LocalPath + " : " + Request.HttpMethod + " : " + msg ?? "Hello" + MicroService.Config.ServerName);
}
}
用法和Ack一样,仅是作用不同。
作用区域:
1、局部控制器内生效:重载CheckToken方法即可。2、全局生效:在全局控制器DefaultController中的全局事件CheckToken方法实现。
框架内部有提供实现,但是不建议使用,如有需要可以参考源码使用。
参考源码在: https://github.com/cyq1162/Taurus.MVC/blob/master/Taurus.Core/Extend/AuthController.cs
作用:
用于校验微服务间的调用权限验证,避免直接请求。
使用方式和【Ack】【Token】一样,也有对应的方法:
public class MSController : Controller
{ public override bool CheckMicroService()
{ string key = Query<string>(MicroService.Const.HeaderKey); //进行安全验证
return ...
} /// <summary>
/// Get or Post 测试 /// </summary>
/// <param name="msg">post 消息</param>
/// <param name="file" type="file">file</param> [HttpGet]
[HttpPost]
[MicroService] public void Hello(string msg, System.Web.HttpPostedFile file)
{ //MicroService.Const.HeaderKey
if (file != null)
{
file.SaveAs(file.FileName);
} if (Request.UrlReferrer != null)
{
Write("From : " + Request.UrlReferrer.ToString() + "\r\n");
}
Write("MicroService : " + MicroService.Config.AppRunUrl + Request.Url.LocalPath + " : " + Request.HttpMethod + " : " + msg ?? "Hello" + MicroService.Config.ServerName);
}
}
作用区域:
1、局部控制器内生效:重载CheckMicroService方法即可。2、全局生效:在全局控制器DefaultController中的全局事件CheckMicroService方法实现。
该属性的使用,在Taurus.MVC 微服务框架系列的安全篇中,会另外提到。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70020836/viewspace-2910082/ ,如需转载,请注明出处,否则将追究法律责任。