系列目录

1、Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行。

2、Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。

3、Taurus.MVC WebAPI 入门开发教程3:路由类型和路由映射。

4、Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。

5、Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。

6、Taurus.MVC WebAPI 入门开发教程6:全局控制器DefaultController与全局事件。

7、Taurus.MVC WebAPI 入门开发教程7:业务逻辑基类LogicBase的使用。

8、Taurus.MVC WebAPI 入门开发教程8:WebAPI文档与自动化测试。

后续还有两个系列:

1、Taurus.MVC 微服务 入门开发教程系列。

2、Taurus.MVC Web应用 入门开发教程系列。
 

前言:

本系列还有几篇,抓紧时间写完,本篇介绍控制器各安全校验属性的使用。

1、Http请求方式属性:【HttpGet】【HttpPost】【HttpHead】【HttpPut】【HttpDelete】

作用:

可限制该方法允许的请求类型,允许标识多个。

如果方法没有标记,即默认允许所有请求类型。

对于控制器的方法,只需要标识上对应的属性标签,示例使用:

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两种请求方式。

2、安全控制属性:【Ack】

作用:

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方法实现。

对于安全的处理代码,框架没有提供,有需要可自己实现。

3、账号授权属性:【Token】

作用:

作为账号登陆后,传递账号信息用于校验与获取信息使用。

该标识通常要求发起请求者在请求头传递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

4、微服务通讯安全属性:【MicroService】

作用:

用于校验微服务间的调用权限验证,避免直接请求。

使用方式和【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 微服务框架系列的安全篇中,会另外提到。

总结:

本篇介绍各属性在控制器中的基本使用,各属性都可以在各控制器类或方法中使用。

对于需要全局统一管控处理的,在全局控制中处理,可以见下一篇都得,全局的DefaultController。

Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。的更多相关文章

  1. Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  2. Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  3. Taurus.MVC WebAPI 入门开发教程6:全局控制器DefaultController与全局事件。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  4. Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。

    前言: Taurus.MVC 微服务版本已经发布了:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. 以前都是框架发布时写点相关功能点的文章,没有形成 ...

  5. Taurus.MVC WebAPI 入门开发教程3:路由类型和路由映射。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  6. Taurus.MVC WebAPI 入门开发教程8:WebAPI文档与自动化测试。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  7. Taurus.MVC 微服务框架 入门开发教程:项目集成:4、默认安全认证与自定义安全认证。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  8. Taurus.MVC 微服务框架 入门开发教程:项目集成:6、微服务间的调用方式:Rpc.StartTaskAsync。

    系统目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

  9. Taurus.MVC 微服务框架 入门开发教程:项目部署:7、微服务节点的监控与告警。

    系统目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

随机推荐

  1. 聊聊C#中的Mixin

    写在前面 Mixin本意是指冰淇淋表面加的那些草莓酱,葡萄干等点缀物,它们负责给冰淇淋添加风味.在OOP里面也有Mixin这个概念,和它的本意相似,OOP里面的Mixin意在为类提供一些额外功能--在 ...

  2. 历经70+场面试,我发现了大厂面试的bug,并总结其中心得

    想起了学弟在去年秋招时面试了50余家,加上暑期实习面试了20余家,加起来也面试了70余场. 基本把国内有名的互联网公司都面了一遍,不敢说自己的面试经验很丰富,但也是不差的. 这次专门把大厂的面试做了个 ...

  3. SpringCloud微服务实战——搭建企业级开发框架(四十一):扩展JustAuth+SpringSecurity+Vue实现多租户系统微信扫码、钉钉扫码等第三方登录

      前面我们详细介绍了SSO.OAuth2的定义和实现原理,也举例说明了如何在微服务框架中使用spring-security-oauth2实现单点登录授权服务器和单点登录客户端.目前很多平台都提供了单 ...

  4. 2021.05.29【NOIP提高B组】模拟 总结

    T1 题意:给你一个图,可以不花代价经过 \(K\) 条边,问从起点到终点的最短路 考试的想法:设 \(dis_{i,j}\) 表示从起点免费了 \(j\) 条边到 \(i\) 的最短路 然后直接跑 ...

  5. 从零开始实现lmax-Disruptor队列(二)多消费者、消费者组间消费依赖原理解析

    MyDisruptor V2版本介绍 在v1版本的MyDisruptor实现单生产者.单消费者功能后.按照计划,v2版本的MyDisruptor需要支持多消费者和允许设置消费者组间的依赖关系. 由于该 ...

  6. Python双人五子棋

    这篇文章旨在介绍一个双人的五子棋程序.再次重申,本人不擅长对代码的可读性进行优化,所以可能有些杂乱(在所难免). 先瞅一眼效果图: 请注意,这个棋子--是这么圆润立体!本程序不需任何素材图片,完全用代 ...

  7. JS:eval

    定义和用法: eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行.eval()函数并不会创建一个新的作用域,并且它的作用域就是它所在的作用域. 如果参数是一个表达式,eva ...

  8. JS:typeof

    想要弄明白某一个变量中保存的数据到底是什么数据类型,我们可以使用到typeof操作符. typeof操作符:检测变量的数据类型. 看例子! var a = "abc"; var b ...

  9. 文件上传漏洞靶场分析 UPLOAD_LABS

    文件上传漏洞靶场(作者前言) 文件上传漏洞 产生原理 PASS 1) function checkFile() { var file = document.getElementsByName('upl ...

  10. BUUCTF-爱因斯坦

    爱因斯坦 16进制打开可以看到存在压缩包,使用binwalk分离出来 提示需要解压密码,按照常理爆破四位数纯数字没有出来,查看图片属性发现密码 得到flag