我有一個ASP.NET MVC Framework (.NET Framework 4.7.2) Web 應用程式。現在它在 IIS 服務器上運行并使用 MS SQL 資料庫。業務邏輯和網站本身的很大一部分是幾年前由另一家公司撰寫的。我持有程式集的源代碼。
我遇到的問題是我必須將 Web API 添加到專案中。API 將只包含幾個控制器方法,沒什么特別的。我不知道哪種方法在這種情況下是最好的。我已經閱讀了大量關于 SO 等的帖子,但仍然不相信。
Global.asax.cs我的第一個想法是在設定網頁路由之前添加“Microsoft ASP.NET Web API”包并在檔案中設定 API 的路由。之后,我可以添加控制器(帶有屬性[Route("api/[controller]")]并在 IoC 容器中添加更改。所以,我在解決方案中會有兩種型別的控制器,一種在Controller類之后繼承,另一種在類之后繼承ApiController。但我是還有義務在 API 中提供授權程序。所以不知道在這種情況下如何做到這一點。
另一個想法是在解決方案中創建一個單獨的專案,僅用于 API 專案。我會使用網頁專案中使用的程式集(比如說,業務邏輯)。我會創建另一個 IIS 網站,我會在其中放置 API。我有兩個網站(網頁和 API)使用相同的連接字串與 MS SQL Server 通信,不確定它是否可以作業?這兩個網站都將擁有其程式集檔案的副本。在這種情況下,添加授權似乎要簡單得多(?)。
我認為第二個是更清潔的,但考慮到我只需要,比如說,API 的 15 個控制器方法,這可能太費勁了。但是,如果一切都在一個地方,如何提供授權呢?
uj5u.com熱心網友回復:
是的,可以在 Visual Studio 中同時運行多個專案轉到解決方案并將啟動專案設定為多個(從您的專案串列中選擇)
uj5u.com熱心網友回復:
在我看來,你提到的兩個想法都是可行的。他們每個人都有自己的優點和缺點。
第一個想法
第一種思路的好處是API和MVC集成在一個網站中,不存在跨域問題。但是有一個缺點,如果網站是一個大專案,某個地方的問題可能會影響到整體。您需要分別對 API 和 MVC 進行故障排除。
但我也有義務在 API 中提供授權程序。所以不知道如何在這種情況下做到這一點。
我可以提供的一個很好的選擇是使用Authenticationand Authorization Filter。如果您在 MVC 專案中有用戶模型,這將變得很容易。只需為不同的用戶設定不同的角色,然后在 APIController 或 Action 上添加 Filter Attribute。這將過濾掉不符合要求的用戶。
public class TestController : ApiController
{
[Authorize(Roles = "SuperAdmin, Admin, User")]
[HttpGet]
[Route("api/test/resource1")]
public IHttpActionResult GetResource1()
{
return ...;
}
}
你可以參考
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/410864.html
標籤:
