我正在從事 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 關注
- 148 瀏覽
添加回答
舉報
0/150
提交
取消
