Samouczek: hostowanie interfejsu API RESTful z mechanizmem CORS w usłudze Azure App ServiceTutorial: Host a RESTful API with CORS in Azure App Service

Azure App Service zapewnia wysoce skalowalną, samoobsługową usługę hostingu w sieci Web.Azure App Service provides a highly scalable, self-patching web hosting service. Usługa App Service ma dodatkowo wbudowaną obsługę mechanizmu współużytkowania zasobów między źródłami (CORS, Cross-Origin Resource Sharing) dla interfejsów API RESTful.In addition, App Service has built-in support for Cross-Origin Resource Sharing (CORS) for RESTful APIs. Ten samouczek pokazuje, w jaki sposób wdrożyć aplikację interfejsu API platformy ASP.NET Core w usłudze App Service z obsługą mechanizmu CORS.This tutorial shows how to deploy an ASP.NET Core API app to App Service with CORS support. Aplikacja zostanie skonfigurowana przy użyciu narzędzi wiersza polecenia i wdrożona za pomocą narzędzia Git.You configure the app using command-line tools and deploy the app using Git.

Ten samouczek zawiera informacje na temat wykonywania następujących czynności:In this tutorial, you learn how to:

  • Tworzenie zasobów usługi App Service przy użyciu interfejsu wiersza polecenia platformy AzureCreate App Service resources using Azure CLI
  • Wdrażanie interfejsu API RESTful na platformie Azure za pomocą narzędzia GitDeploy a RESTful API to Azure using Git
  • Włączanie obsługi mechanizmu CORS w usłudze App ServiceEnable App Service CORS support

Kroki opisane w tym samouczku można wykonać w systemie macOS, Linux i Windows.You can follow the steps in this tutorial on macOS, Linux, Windows.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem Utwórz bezpłatne konto .If you don't have an Azure subscription, create a free account before you begin.

Wymagania wstępnePrerequisites

W celu ukończenia tego samouczka:To complete this tutorial:

Tworzenie lokalnej aplikacji ASP.NET CoreCreate local ASP.NET Core app

Ten krok umożliwia skonfigurowanie lokalnego projektu platformy ASP.NET Core.In this step, you set up the local ASP.NET Core project. Usługa App Service obsługuje ten sam przepływ pracy w przypadku interfejsów API napisanych w innych językach.App Service supports the same workflow for APIs written in other languages.

Klonowanie przykładowej aplikacjiClone the sample application

W oknie terminalu dodaj element cd do katalogu roboczego.In the terminal window, cd to a working directory.

Uruchom następujące polecenie w celu sklonowania przykładowego repozytorium.Run the following command to clone the sample repository.

git clone https://github.com/Azure-Samples/dotnet-core-api

To repozytorium zawiera aplikację utworzoną na podstawie następującego samouczka: ASP.NET Core Web API help pages using Swagger (Strony pomocy internetowego interfejsu API platformy ASP.NET Core korzystające ze struktury Swagger).This repository contains an app that's created based on the following tutorial: ASP.NET Core Web API help pages using Swagger. Używa ona generatora struktury Swagger, aby obsłużyć interfejs użytkownika struktury Swagger oraz punkt końcowy JSON struktury Swagger.It uses a Swagger generator to serve the Swagger UI and the Swagger JSON endpoint.

Uruchamianie aplikacjiRun the application

Uruchom następujące polecenia, aby zainstalować wymagane pakiety, uruchom migracje baz danych i uruchom aplikację.Run the following commands to install the required packages, run database migrations, and start the application.

cd dotnet-core-api
dotnet restore
dotnet run

Przejdź do adresu http://localhost:5000/swagger w przeglądarce, aby przetestować interfejs użytkownika struktury Swagger.Navigate to http://localhost:5000/swagger in a browser to play with the Swagger UI.

Interfejs API platformy ASP.NET Core uruchomiony lokalnie

Przejdź do adresu http://localhost:5000/api/todo, aby wyświetlić listę zadań w formacie JSON.Navigate to http://localhost:5000/api/todo and see a list of ToDo JSON items.

Przejdź do adresu http://localhost:5000, aby przetestować aplikację przeglądarki.Navigate to http://localhost:5000 and play with the browser app. Później wskażesz aplikacji przeglądarki zdalny interfejs API w usłudze App Service, aby przetestować działanie mechanizmu CORS.Later, you will point the browser app to a remote API in App Service to test CORS functionality. Kod aplikacji przeglądarki znajduje się w katalogu wwwroot repozytorium.Code for the browser app is found in the repository's wwwroot directory.

Aby zatrzymać platformę ASP.NET Core w dowolnym momencie, naciśnij kombinację klawiszy Ctrl+C w terminalu.To stop ASP.NET Core at any time, press Ctrl+C in the terminal.

Używanie usługi Azure Cloud ShellUse Azure Cloud Shell

Na platforma Azure hostowane jest Azure Cloud Shell, interaktywne środowisko powłoki, z którego można korzystać w przeglądarce.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Do pracy z usługami platformy Azure można używać programu Bash lub PowerShell w środowisku Cloud Shell.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Aby uruchomić kod z tego artykułu bez konieczności instalowania narzędzi w środowisku lokalnym, można użyć wstępnie zainstalowanych poleceń środowiska Cloud Shell.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Aby uruchomić środowisko Azure Cloud Shell:To start Azure Cloud Shell:

OpcjaOption Przykład/linkExample/Link
Wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu.Select Try It in the upper-right corner of a code block. Wybranie pozycji Wypróbuj nie spowoduje automatycznego skopiowania kodu do środowiska Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Przykład funkcji Wypróbuj w środowisku Azure Cloud Shell
Przejdź do witryny https://shell.azure.com lub wybierz przycisk Uruchom Cloud Shell, aby otworzyć środowisko Cloud Shell w przeglądarce.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Uruchamianie środowiska Cloud Shell w nowym oknieLaunch Cloud Shell in a new window
Wybierz przycisk Cloud Shell na pasku menu w prawym górnym rogu witryny Azure Portal.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Przycisk Cloud Shell w witrynie Azure Portal

Aby uruchomić kod z tego artykułu w środowisku Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Uruchom usługę Cloud Shell.Start Cloud Shell.

  2. Wybierz przycisk Kopiuj w bloku kodu, aby skopiować kod.Select the Copy button on a code block to copy the code.

  3. Wklej kod w sesji Cloud Shell, naciskając klawisze Ctrl+Shift+V w systemach Windows i Linux lub klawisze Cmd+Shift+V w systemie macOS.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Naciśnij klawisz Enter, aby uruchomić kod.Select Enter to run the code.

Wdrażanie aplikacji na platformie AzureDeploy app to Azure

W tym kroku wdrożysz aplikację .NET Core połączoną z bazą danych SQL Database w usłudze App Service.In this step, you deploy your SQL Database-connected .NET Core application to App Service.

Konfigurowanie lokalnego wdrożenia narzędzia GitConfigure local git deployment

Usługa FTP i lokalne narzędzia Git można wdrożyć w aplikacji sieci Web platformy Azure przy użyciu użytkownika wdrożenia.FTP and local Git can deploy to an Azure web app by using a deployment user. Po skonfigurowaniu użytkownika wdrożenia można go użyć do wszystkich wdrożeń platformy Azure.Once you configure your deployment user, you can use it for all your Azure deployments. Nazwa użytkownika i hasło wdrożenia na poziomie konta różnią się od poświadczeń subskrypcji platformy Azure.Your account-level deployment username and password are different from your Azure subscription credentials.

Aby skonfigurować użytkownika wdrożenia, uruchom polecenie AZ webapp Deployment User Set w Azure Cloud Shell.To configure the deployment user, run the az webapp deployment user set command in Azure Cloud Shell. Zastąp <username> i nazwą <password> użytkownika i hasłem dla wdrożenia.Replace <username> and <password> with a deployment user username and password.

  • Nazwa użytkownika musi być unikatowa w ramach platformy Azure, a w przypadku lokalnych powiadomień wypychanych Git nie może zawierać symbolu "@".</span><span class="sxs-lookup">The username must be unique within Azure, and for local Git pushes, must not contain the ‘@’ symbol.
  • Hasło musi składać się z co najmniej ośmiu znaków, a dwa z następujących trzech elementów: litery, cyfry i symbole.The password must be at least eight characters long, with two of the following three elements: letters, numbers, and symbols.
az webapp deployment user set --user-name <username> --password <password>

Dane wyjściowe JSON przedstawiają hasło jako null .The JSON output shows the password as null. Jeśli wystąpił błąd 'Conflict'. Details: 409, zmień nazwę użytkownika.If you get a 'Conflict'. Details: 409 error, change the username. Jeśli wystąpił błąd 'Bad Request'. Details: 400, użyj silniejszego hasła.If you get a 'Bad Request'. Details: 400 error, use a stronger password.

Zapisz nazwę użytkownika i hasło, aby użyć do wdrożenia aplikacji sieci Web.Record your username and password to use to deploy your web apps.

Tworzenie grupy zasobówCreate a resource group

Grupa zasobów to logiczny kontener, w którym są wdrażane i zarządzane zasoby platformy Azure, takie jak aplikacje sieci Web, bazy danych i konta magazynu.A resource group is a logical container into which Azure resources like web apps, databases, and storage accounts are deployed and managed. Na przykład można później usunąć całą grupę zasobów w jednym prostym kroku.For example, you can choose to delete the entire resource group in one simple step later.

W Cloud Shell Utwórz grupę zasobów za pomocą az group create polecenia.In the Cloud Shell, create a resource group with the az group create command. Poniższy przykład obejmuje tworzenie grupy zasobów o nazwie myResourceGroup w lokalizacji West Europe (Europa Zachodnia).The following example creates a resource group named myResourceGroup in the West Europe location. Aby wyświetlić wszystkie obsługiwane lokalizacje dla usługi App Service w warstwie Bezpłatna, uruchom polecenie az appservice list-locations --sku FREE.To see all supported locations for App Service in Free tier, run the az appservice list-locations --sku FREE command.

az group create --name myResourceGroup --location "West Europe"

Zasadniczo grupy zasobów i zasoby są tworzone w pobliskim regionie.You generally create your resource group and the resources in a region near you.

Po zakończeniu działania polecenia zostaną wyświetlone dane wyjściowe JSON z właściwościami grupy zasobów.When the command finishes, a JSON output shows you the resource group properties.

Tworzenie planu usługi App ServiceCreate an App Service plan

W Cloud Shell Utwórz plan App Service za pomocą az appservice plan create polecenia.In the Cloud Shell, create an App Service plan with the az appservice plan create command.

W poniższym przykładzie jest tworzony plan usługi App Service o nazwie myAppServicePlan przy użyciu warstwy cenowej Bezpłatna:The following example creates an App Service plan named myAppServicePlan in the Free pricing tier:

az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE

Po utworzeniu planu usługi App Service interfejs wiersza polecenia platformy Azure wyświetli informacje podobne do następujących:When the App Service plan has been created, the Azure CLI shows information similar to the following example:

{ 
  "adminSiteName": null,
  "appServicePlanName": "myAppServicePlan",
  "geoRegion": "West Europe",
  "hostingEnvironmentProfile": null,
  "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
  "kind": "app",
  "location": "West Europe",
  "maximumNumberOfWorkers": 1,
  "name": "myAppServicePlan",
  < JSON data removed for brevity. >
  "targetWorkerSizeId": 0,
  "type": "Microsoft.Web/serverfarms",
  "workerTierName": null
} 

tworzenie aplikacji internetowejCreate a web app

Utwórz aplikację internetową w myAppServicePlan planie App Service.Create a web app in the myAppServicePlan App Service plan.

W Cloud Shell można użyć az webapp create polecenia.In the Cloud Shell, you can use the az webapp create command. W poniższym przykładzie zastąp ciąg <app-name> globalnie unikatową nazwą aplikacji (prawidłowe znaki to a-z, 0-9 i -).In the following example, replace <app-name> with a globally unique app name (valid characters are a-z, 0-9, and -).

az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --deployment-local-git

Po utworzeniu aplikacji internetowej w interfejsie wiersza polecenia platformy Azure zostaną wyświetlone dane wyjściowe podobne do następujących:When the web app has been created, the Azure CLI shows output similar to the following example:

Local git is configured with url of 'https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git'
{
  "availabilityState": "Normal",
  "clientAffinityEnabled": true,
  "clientCertEnabled": false,
  "clientCertExclusionPaths": null,
  "cloningInfo": null,
  "containerSize": 0,
  "dailyMemoryTimeQuota": 0,
  "defaultHostName": "<app-name>.azurewebsites.net",
  "deploymentLocalGitUrl": "https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git",
  "enabled": true,
  < JSON data removed for brevity. >
}

Uwaga

Adres URL zdalnego repozytorium Git jest wyświetlany we właściwości deploymentLocalGitUrl w formacie https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git.The URL of the Git remote is shown in the deploymentLocalGitUrl property, with the format https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Zapisz ten adres URL, ponieważ będzie on potrzebny później.Save this URL as you need it later.

Wypychanie z narzędzia Git na platformę AzurePush to Azure from Git

W lokalnym oknie terminala dodaj zdalną platformę Azure do lokalnego repozytorium Git.Back in the local terminal window, add an Azure remote to your local Git repository. Zamień na <deploymentLocalGitUrl-from-create-step> adres URL zdalnego narzędzia Git, który został zapisany w obszarze Tworzenie aplikacji sieci Web.Replace <deploymentLocalGitUrl-from-create-step> with the URL of the Git remote that you saved from Create a web app.

git remote add azure <deploymentLocalGitUrl-from-create-step>

Wypchnij na zdalną platformę Azure w celu wdrożenia aplikacji za pomocą następującego polecenia.Push to the Azure remote to deploy your app with the following command. Gdy program git Credential Manager poprosi o podanie poświadczeń, upewnij się, że wprowadzono poświadczenia utworzone w obszarze Konfigurowanie użytkownika wdrożenia, a nie poświadczenia, których używasz do logowania się do Azure Portal.When Git Credential Manager prompts you for credentials, make sure you enter the credentials you created in Configure a deployment user, not the credentials you use to sign in to the Azure portal.

git push azure master

Wykonanie tego polecenia może potrwać kilka minut.This command may take a few minutes to run. Podczas wykonywania polecenie wyświetli informacje podobne do następującego przykładu:While running, it displays information similar to the following example:

Enumerating objects: 83, done.
Counting objects: 100% (83/83), done.
Delta compression using up to 8 threads
Compressing objects: 100% (78/78), done.
Writing objects: 100% (83/83), 22.15 KiB | 3.69 MiB/s, done.
Total 83 (delta 26), reused 0 (delta 0)
remote: Updating branch 'master'.
remote: Updating submodules.
remote: Preparing deployment for commit id '509236e13d'.
remote: Generating deployment script.
remote: Project file path: .\TodoApi.csproj
remote: Generating deployment script for ASP.NET MSBuild16 App
remote: Generated deployment script files
remote: Running deployment command...
remote: Handling ASP.NET Core Web Application deployment with MSBuild16.
remote: .
remote: .
remote: .
remote: Finished successfully.
remote: Running post deployment command(s)...
remote: Triggering recycle (preview mode disabled).
remote: Deployment successful.
To https://<app_name>.scm.azurewebsites.net/<app_name>.git
 * [new branch]      master -> master

Przechodzenie do aplikacji platformy AzureBrowse to the Azure app

Przejdź do adresu http://<app_name>.azurewebsites.net/swagger w przeglądarce, aby przetestować interfejs użytkownika struktury Swagger.Navigate to http://<app_name>.azurewebsites.net/swagger in a browser and play with the Swagger UI.

Interfejs API platformy ASP.NET Core uruchomiony w usłudze Azure App Service

Przejdź do adresu http://<app_name>.azurewebsites.net/swagger/v1/swagger.json, aby wyświetlić plik swagger.json wdrożonego interfejsu API.Navigate to http://<app_name>.azurewebsites.net/swagger/v1/swagger.json to see the swagger.json for your deployed API.

Przejdź do adresu http://<app_name>.azurewebsites.net/api/todo, aby wyświetlić działający wdrożony interfejs API.Navigate to http://<app_name>.azurewebsites.net/api/todo to see your deployed API working.

Dodawanie funkcji obsługi mechanizmu CORSAdd CORS functionality

Następnie włącz wbudowaną obsługę mechanizmu CORS w usłudze App Service dla interfejsu API.Next, you enable the built-in CORS support in App Service for your API.

Testowanie mechanizmu CORS w aplikacji przykładowejTest CORS in sample app

W lokalnym repozytorium otwórz plik wwwroot/index.html.In your local repository, open wwwroot/index.html.

W wierszu 51 ustaw zmienną apiEndpoint na adres URL wdrożonego interfejsu API (http://<app_name>.azurewebsites.net).In Line 51, set the apiEndpoint variable to the URL of your deployed API (http://<app_name>.azurewebsites.net). Zastąp ciąg <appname> nazwą swojej aplikacji w App Service.Replace <appname> with your app name in App Service.

W lokalnym oknie terminala ponownie uruchom aplikację przykładową.In your local terminal window, run the sample app again.

dotnet run

Przejdź do aplikacji przeglądarki pod adresem http://localhost:5000.Navigate to the browser app at http://localhost:5000. Otwórz okno narzędzia deweloperskie w przeglądarce ( Ctrl + Shift + i w programie Chrome dla systemu Windows) i sprawdź kartę konsola . Powinien pojawić się komunikat o błędzie No 'Access-Control-Allow-Origin' header is present on the requested resource .Open the developer tools window in your browser (Ctrl+Shift+i in Chrome for Windows) and inspect the Console tab. You should now see the error message, No 'Access-Control-Allow-Origin' header is present on the requested resource.

Błąd mechanizmu CORS w kliencie przeglądarki

Ze względu na niezgodność domeny aplikacji przeglądarki (http://localhost:5000) i zdalnego zasobu (http://<app_name>.azurewebsites.net) oraz z uwagi na fakt, że interfejs API usługi App Service nie wysyła nagłówka Access-Control-Allow-Origin, przeglądarka uniemożliwiła ładowanie zawartości między domenami w aplikacji przeglądarki.Because of the domain mismatch between the browser app (http://localhost:5000) and remote resource (http://<app_name>.azurewebsites.net), and the fact that your API in App Service is not sending the Access-Control-Allow-Origin header, your browser has prevented cross-domain content from loading in your browser app.

W środowisku produkcyjnym aplikacja przeglądarki miałaby publiczny adres URL zamiast adresu URL hosta lokalnego, ale sposób włączania mechanizmu CORS dla adresu URL hosta lokalnego jest taki sam, jak dla publicznego adresu URL.In production, your browser app would have a public URL instead of the localhost URL, but the way to enable CORS to a localhost URL is the same as a public URL.

Włączanie mechanizmu CORSEnable CORS

W Cloud Shell Włącz funkcję CORS dla adresu URL klienta przy użyciu az webapp cors add polecenia.In the Cloud Shell, enable CORS to your client's URL by using the az webapp cors add command. Zastąp symbol zastępczy _ <>nazwa aplikacji_ .Replace the <app-name> placeholder.

az webapp cors add --resource-group myResourceGroup --name <app-name> --allowed-origins 'http://localhost:5000'

W parametrze properties.cors.allowedOrigins możesz określić więcej niż jeden adres URL klienta ("['URL1','URL2',...]").You can set more than one client URL in properties.cors.allowedOrigins ("['URL1','URL2',...]"). Możesz również włączyć adresy URL wszystkich klientów za pomocą wartości "['*']".You can also enable all client URLs with "['*']".

Uwaga

Jeśli Twoja aplikacja wymaga wysyłania poświadczeń, takich jak pliki cookie lub tokeny uwierzytelniania, przeglądarka może wymagać nagłówka ACCESS-CONTROL-ALLOW-CREDENTIALS w odpowiedzi.If your app requires credentials such as cookies or authentication tokens to be sent, the browser may require the ACCESS-CONTROL-ALLOW-CREDENTIALS header on the response. Aby włączyć tę funkcję w App Service, ustaw wartość properties.cors.supportCredentials true w konfiguracji CORS. Tego nie można włączyć, gdy allowedOrigins zawiera '*' .To enable this in App Service, set properties.cors.supportCredentials to true in your CORS config. This cannot be enabled when allowedOrigins includes '*'.

Ponowne testowanie mechanizmu CORSTest CORS again

Odśwież aplikację przeglądarki pod adresem http://localhost:5000.Refresh the browser app at http://localhost:5000. Komunikat o błędzie w oknie Konsola zniknął i możesz wyświetlić dane z wdrożonego interfejsu API oraz z nich korzystać.The error message in the Console window is now gone, and you can see the data from the deployed API and interact with it. Zdalny interfejs API obsługuje teraz mechanizm CORS w aplikacji przeglądarki uruchomionej lokalnie.Your remote API now supports CORS to your browser app running locally.

Powodzenie mechanizmu CORS w kliencie przeglądarki

Gratulacje. Używasz interfejsu API w usłudze Azure App Service z obsługą mechanizmu CORS.Congratulations, you're running an API in Azure App Service with CORS support.

Porównanie mechanizmu CORS usługi App Service z własnym mechanizmem CORSApp Service CORS vs. your CORS

W celu uzyskania większej elastyczności możesz korzystać z narzędzi własnego mechanizmu CORS zamiast mechanizmu CORS usługi App Service.You can use your own CORS utilities instead of App Service CORS for more flexibility. Możesz na przykład potrzebować określenia różnych dozwolonych źródeł dla różnych tras lub metod.For example, you may want to specify different allowed origins for different routes or methods. Ponieważ mechanizm CORS usługi App Service umożliwia określenie jednego zestawu zaakceptowanych źródeł dla wszystkich tras i metod interfejsu API, lepsze może okazać się użycie własnego kodu mechanizmu CORS.Since App Service CORS lets you specify one set of accepted origins for all API routes and methods, you would want to use your own CORS code. Zobacz, jak to działa na platformie ASP.NET Core, w temacie Enabling Cross-Origin Requests (CORS) (Włączanie żądań między źródłami [CORS]).See how ASP.NET Core does it at Enabling Cross-Origin Requests (CORS).

Uwaga

Nie próbuj używać jednocześnie mechanizmu CORS usługi App Service i własnego kodu mechanizmu CORS.Don't try to use App Service CORS and your own CORS code together. W takim przypadku mechanizm CORS usługi App Service ma pierwszeństwo, a Twój kod mechanizmu CORS jest nieskuteczny.When used together, App Service CORS takes precedence and your own CORS code has no effect.

Oczyszczanie zasobówClean up resources

W poprzednich krokach utworzono zasoby platformy Azure w grupie zasobów.In the preceding steps, you created Azure resources in a resource group. Jeśli te zasoby nie będą raczej potrzebne w przyszłości, usuń grupę zasobów, uruchamiając następujące polecenie w usłudze Cloud Shell:If you don't expect to need these resources in the future, delete the resource group by running the following command in the Cloud Shell:

az group delete --name myResourceGroup

Wykonanie tego polecenia może potrwać około minutę.This command may take a minute to run.

Następne krokiNext steps

Które czynności umiesz wykonać:What you learned:

  • Tworzenie zasobów usługi App Service przy użyciu interfejsu wiersza polecenia platformy AzureCreate App Service resources using Azure CLI
  • Wdrażanie interfejsu API RESTful na platformie Azure za pomocą narzędzia GitDeploy a RESTful API to Azure using Git
  • Włączanie obsługi mechanizmu CORS w usłudze App ServiceEnable App Service CORS support

Przejdź do następnego samouczka, aby dowiedzieć się, jak uwierzytelniać i autoryzować użytkowników.Advance to the next tutorial to learn how to authenticate and authorize users.