C# Web API防止过度发布

本文档介绍了在C# Web API中如何使用DTO(数据传输对象)来确保安全,防止过度发布。通过创建DTO模型,可以隐藏客户端不应查看的属性,缩减有效负载大小,并平展嵌套对象。示例展示了如何在控制器中重写GetTodoItems方法,选择性地发布和获取包含敏感信息的TodoItem模型的DTO版本。
摘要由CSDN通过智能技术生成

为了安全考虑,使用EFcore进行数据交互时,使用模型的子集,通常称为数据传输对象(DTO)、输入模型或视图模型,而不是直接使用模型类。

DTO用途:

  • 防止过度发布。
  • 隐藏客户端不应查看的属性。
  • 省略一些属性以缩减有效负载大小。
  • 平展包含嵌套对象的对象图。 对客户端而言,平展的对象图可能更方便。

例如TodoItem模型类,包含秘密字段

namespace TodoApi.Models
{
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
        public string? Secret { get; set; }
    }
}

创建DTO模型,选择性发布和获取机密字段

namespace TodoApi.Models
{
    public class TodoItemDTO
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
}

控制器文件重写:

        public async Task<ActionResult<IEnumerable<TodoItemDTO>>> GetTodoItems()
        {
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值