Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。
系列目录
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】。的更多相关文章
- Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程6:全局控制器DefaultController与全局事件。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。
前言: Taurus.MVC 微服务版本已经发布了:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. 以前都是框架发布时写点相关功能点的文章,没有形成 ...
- Taurus.MVC WebAPI 入门开发教程3:路由类型和路由映射。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程8:WebAPI文档与自动化测试。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC 微服务框架 入门开发教程:项目集成:4、默认安全认证与自定义安全认证。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- Taurus.MVC 微服务框架 入门开发教程:项目集成:6、微服务间的调用方式:Rpc.StartTaskAsync。
系统目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:7、微服务节点的监控与告警。
系统目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...
随机推荐
- 英语资源及其APP推荐
step1:记单词 a,说到背单词常规方法是拿着一本单词书一个一个往下背.该种方法不仅枯燥且效率极低. b,app辅助记忆.在此就我用过的两个app做简述.第一个是百词斩 百词斩:功能主打图片记忆,并 ...
- Python工程:ImportError: attempted relative import with no known parent package
Python工程:ImportError: attempted relative import with no known parent package 解决方法: 1.对每个目录创建的时候都选择创建 ...
- mysql 开启binlog日志,恢复误删的表、数据、mysql库
linux下开启mysql的binlog日志功能 1.配置mysql配置文件my.cnf(内容如下). #配置文件储存的位置log-bin=mysql-bin#5.7以及以上版本需要配置这一行(保证唯 ...
- AtCoder ABC 250 总结
AtCoder ABC 250 总结 总体 连续若干次一样的结果:30min 切前 4 题,剩下卡在 T5 这几次卡在 T5 都是一次比一次接近, 什么 dp 前缀和打挂,精度被卡,能水过的题连水法都 ...
- [自制操作系统] 第02回 初识MBR
目录 一.前景回顾 二.写一个粗略的MBR 三.运行测试 一.前景回顾 上回说到,开机的启动过程就是当时Intel和BIOS等硬件厂商所制定的规则,现在我们来回顾一下有如下三点: 1.按下开机键后,C ...
- 隐私计算FATE-离线预测
一.说明 Fate 的模型预测有 离线预测 和 在线预测 两种方式,两者的效果是一样的,主要是使用方式.适用场景.高可用.性能等方面有很大差别:本文分享使用 Fate 基于 纵向逻辑回归 算法训练出来 ...
- expect自动应答
expect脚本 1. expect简介 expect是一个用来处理交互的命令.借助Expect,我们可以将交互过程写在一个脚本上,使之自动化完成. expect(自动应答) 基于TCL(Tool C ...
- UiPath Excel修改操作
一.Excel 修改操作 1.删除行 (1)控件介绍 Insert/Delete Rows: 在特定位置添加或删除指定数量的行 常用属性介绍: Destination: NoRows: ...
- SpringBoot 整合文件上传 elment Ui 上传组件
SpringBoot 整合文件上传 elment Ui 上传组件 本文章记录 自己学习使用 侵权必删! 前端代码 博主最近在学 elment Ui 所以 前端使用 elmentUi 的 upload ...
- sql-DQL-单表查询
单表查询 select [distint]* 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件 order by 排序 limit 分页限定 ...