![](/img/trans.png)
[英]Net Core WebApi 2.1 and Angular 2 app - IIS Deployment
[英]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作為后端。 看到這個鏈接
首先,您需要從這里下載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(跨站點請求偽造)請求。 在過去,這很棘手,但是現在有了更新的機制(即HttpOnly , Secure 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.