簡體   English   中英

如何向.NET Core 2.1 Angular應用添加用戶身份驗證?

[英]How to add user authentication to .NET Core 2.1 Angular app?

我正在使用Visual Studio 2017,因為在Angular模板中禁用了`` Individual User Account選項,我一直在徘徊如何向其添加用戶身份驗證? 我剛剛開始使用VS 2017和.Net Core 2.1,所以我正在網上搜索是否有文檔進行搜索,但找不到任何內容。

我看到了一個答案,我只需要在命令提示符下輸入dotnet new angular --auth Individual ,但由於使用Windows 8.1並且該命令適用於.Net Core 3和VS 2019,所以我無法使用它

我已經閱讀了有關該主題的所有google結果,沒有任何幫助。 我什至使用其他搜索引擎希望獲得更好的結果,但一無所獲。

結合使用Dotnet core 3.0和Entityframework core 3.0和Identityserver4,您可以擁有一個應用程序,其中Angular作為前端,Asp.net Core 3.0作為后端。 看到這個鏈接

SPA的身份驗證和授權

首先,您需要從這里下載dotnet core 3.0 sdk。

然后打開命令提示符並使用

dotnet new angular -o <output_directory_name> -au Individual

這將為您創建項目。

現在在Visual Studio中,轉到“工具”>“選項”>“環境”>“預覽功能”並檢查

使用.NET Core SDK的預覽(需要重新啟動)

在此處輸入圖片說明

並重新啟動Visual Studio。

之后,在項目目錄中打開.csProj文件,然后單擊保存。 這將要求您保存在Visual Studio中打開項目時剛創建的解決方案文件。

將.sln文件保存在.csproj的同一目錄中,然后清洗解決方案並重新生成解決方案。

您將擁有以Asp.net核心為后端的Angular應用程序,並為您提供了現成的身份驗證和授權。

完成所有步驟后,這是該應用程序的示例屏幕截圖

在此處輸入圖片說明

請注意,在項目目錄中,您將擁有一個app.db文件,在startup.cs的ConfigureServices方法中,您將看到

services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlite(Configuration.GetConnectionString("DefaultConnection")));

默認情況下,模板使用Sqlite,您可以通過安裝Microsoft.EntityFrameworkCore.SqlServer NuGet包並將其更改為Sql服務器,並在startup.cs文件中更改此設置

services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlite(Configuration.GetConnectionString("DefaultConnection")));

services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

並確保更新appsettings.json文件中的連接字符串。

首先,您不需要VS 2019即可安裝.NET Core 3。

.NET Core SDK是一個命令行應用程序,獨立於VS2019。但是,如果要從UI內創建模板,則應使用vs 2019(以及某些調試/構建功能)。 另外,VS Code也可以。

常規的ASP.NET Core身份(不要與IdentityServer 4(這是一個不同的開源項目)混淆)不太適合SPA身份驗證。 ASP.NET Core Identity僅支持cookie身份驗證,這意味着像在MVC應用程序中一樣登錄,並保護SPA和視圖免受未經授權的訪問(即,加載SPA應用程序的“索引”頁面)。

只要SPA和WebAPI托管在同一域和同一應用程序中,此操作就不需要任何其他設置。 如果您將Angular應用程序和WebApi / Rest服務拆分為可能無法正常運行的多個項目,則需要OpenIDConnect流進行授權。

切記:您需要采取其他措施來保護您的Api免受XSRF(跨站點請求偽造)請求。 在過去,這很棘手,但是現在有了更新的機制(即HttpOnlySecure cookie標志和SameSite )。

您也可以自己添加身份驗證,這需要更多工作。 對於SPA(例如Angular和react),您需要OpenID提供程序(例如OpenIddict或IdentityServer 4)以及隱式OpenID Connect流,並使用oidc-client Java腳本庫執行該操作,通常使用IdSrv4設置客戶端並進行設置回調網址,在登錄后將用戶重定向到該網址。

IdSrv4上有一些有關如何實現它的示例,例如JavaScript方面的JavaScript客戶端示例,該示例基於IdSrv4文檔中的Quickstart 6:JavaScript教程。

獲得令牌的令牌,將它與對WebAPI的每個請求一起傳遞給Authorize標頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM