我正在从事 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() 方法。
千巷猫影
TA贡献1829条经验 获得超7个赞
我假设您的开发人员即使在生产环境中仍然需要访问该端点(用于健全性检查,......与开发和暂存环境相同)。如果是这种情况,请创建一个新策略并将您的开发人员(或您希望向其公开端点的任何其他人)置于该策略之下。
[Authorize(Policy = "JustDevelopersPolicy")]
public async Task<void> PrivateAPI()
{
...
}
仅供参考,它可能会通过调用该端点来更改响应,因此,如果未经授权的人调用它,他们将获得 401 而不是 404
- 2 回答
- 0 关注
- 162 浏览
添加回答
举报
0/150
提交
取消
