5

我知道這個問題可能會收到一些降價,但我在Google上搜索了三天,結果沒有真正可用。如何在Asp Net Core RC1 MVC中添加帶有令牌認證的「ApiController」MVC

我在Visual Studio中創建了一個默認的ASP.NET Core 1.0 RC1項目,使用個人用戶帳戶認證/授權。一切都很簡單和簡單,因爲這個項目使用Microsoft.AspNet.Authentication.Cookies腳手架,而VS 2015完成所有繁重工作。但是,我們希望從同一個項目(使用相同的數據庫,用戶,聲明等)中公開一個API,這些API將從移動設備甚至一些簡單的SPA中使用。這樣,我們需要爲API使用諸如JWT之類的東西(關於如何僅使用WebAPI來完成此操作,有很多教程)。

我們希望使用MVC(非SPA)方式來執行主項目,以利用視圖/控制器腳手架以及Visual Studio可以提供的所有功能。

有很多MVC-only或WebAPI-only方法的教程,但是你能指點我怎麼把它們混合在一起?

是否有一種方法僅在系統範圍內使用JWT和MVC和WebAPI?

預先感謝您。

+0

僅供參考:MVC和的WebAPI已經在MVC 6被合併。'Controller'作爲'MVC'和'API'控制器的基類,例如沒有'ApiController'了。 –

+0

嗨@HenkMollema我知道...因爲這個原因,我把「ApiController」放在引號之間。我知道控制器是一樣的。無論如何,感謝您的評論。 –

+0

Hi @Cezar。你有沒有想過這個?我有完全相同的場景和問題。謝謝 –

回答

1

Limiting identity by scheme此鏈接可能是你的問題的答案。

在某些情況下,如單頁的應用程序有可能 結束了多種認證方式,cookie認證到 日誌和JavaScript的請求承載認證。

我認爲,你可以使用下面的代碼爲MVC和JavaScript調用(當然,您必須啓用Cookie,並承載中間件):

[Authorize(AuthenticationSchemes = "Cookie,Bearer")] 
public class YourController : Controller 
+0

謝謝你的回答!我擔心這在ASP.NET Core 1中不起作用,因爲只有一個'ActiveAuthenticationSchemes'屬性,並且它不在構造函數中。現在,它接受的唯一一個參數是一個包含策略名稱的字符串:'public AuthorizeAttribute(string policy);'。你能指出我應該如何創建一個「僅限WebAPI」策略? –

+0

我無法測試代碼,但可能是一個解決方案:'options.AddPolicy(「PolicyName」,policy => {policy.Requirements.Add(new Infrastructure.MinimumAgeRequirement(21)); policy.AddAuthenticationSchemes(「持票人「); });' –