为了账号安全,请及时绑定邮箱和手机立即绑定

在发布版本中隐藏一个 api 端点

在发布版本中隐藏一个 api 端点

C#
富国沪深 2022-12-31 13:23:21
我正在从事 Asp.net web api 项目。我最近使用config.Services.GetApiExplorer();什么是在生产中隐藏此端点并仍然使其可供我团队中的所有其他开发人员使用的最佳方法。我能想到的一种方法是使用注册路线#if debugroutes.MapRoute("documentation","documentation/help", new { controller = "apiexplorer", action= "Index" });#endif
查看完整描述

2 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

有两个属性可以隐藏 API 端点:


[ApiExplorerSettings(IgnoreApi = true)]

[NonAction]

public async Task<void> PrivateAPI()

{

...

}

但是对于您的情况,我可能会创建一个新属性来检查环境并将该属性应用于您的控制器方法。注入“IHostingEnvironment”类,然后使用 .IsDevelopment() 方法。


查看完整回答
反对 回复 2022-12-31
?
千巷猫影

TA贡献1829条经验 获得超7个赞

我假设您的开发人员即使在生产环境中仍然需要访问该端点(用于健全性检查,......与开发和暂存环境相同)。如果是这种情况,请创建一个新策略并将您的开发人员(或您希望向其公开端点的任何其他人)置于该策略之下。


[Authorize(Policy = "JustDevelopersPolicy")]

public async Task<void> PrivateAPI()

{

...

}

仅供参考,它可能会通过调用该端点来更改响应,因此,如果未经授权的人调用它,他们将获得 401 而不是 404


查看完整回答
反对 回复 2022-12-31
  • 2 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号