--- title: Add, download, and delete custom user data to Identity in an ASP.NET Core project author: rick-anderson description: Learn how to add custom user data to Identity in an ASP.NET Core project. Delete data per GDPR. monikerRange: '>= aspnetcore-2.1' ms.author: riande ms.date: 6/16/2018 uid: security/authentication/add-user-data --- # Add, download, and delete custom user data to Identity in an ASP.NET Core project By [Rick Anderson](https://twitter.com/RickAndMSFT) This article shows how to: * Add custom user data to an ASP.NET Core web app. * Decorate the custom user data model with the [PersonalData](/dotnet/api/microsoft.aspnetcore.identity.personaldataattribute?view=aspnetcore-2.1) attribute so it's automatically available for download and deletion. Making the data able to be downloaded and deleted helps meet [GDPR](xref:security/gdpr) requirements. The project sample is created from a Razor Pages web app, but the instructions are similar for a ASP.NET Core MVC web app. [View or download sample code](https://github.com/aspnet/Docs/tree/live/aspnetcore/security/authentication/add-user-data/sample) ([how to download](xref:tutorials/index#how-to-download-a-sample)) ## Prerequisites [!INCLUDE [](~/includes/2.1-SDK.md)] ## Create a Razor web app # [Visual Studio](#tab/visual-studio) * From the Visual Studio **File** menu, select **New** > **Project**. Name the project **WebApp1** if you want to it match the namespace of the [download sample](https://github.com/aspnet/Docs/tree/live/aspnetcore/security/authentication/add-user-data/sample) code. * Select **ASP.NET Core Web Application** > **OK** * Select **ASP.NET Core 2.1** in the dropdown * Select **Web Application** > **OK** * Build and run the project. # [.NET Core CLI](#tab/netcore-cli) ```cli dotnet new webapp -o WebApp1 ``` [!INCLUDE[](~/includes/webapp-alias-notice.md)] --- ## Run the Identity scaffolder # [Visual Studio](#tab/visual-studio) * From **Solution Explorer**, right-click on the project > **Add** > **New Scaffolded Item**. * From the left pane of the **Add Scaffold** dialog, select **Identity** > **ADD**. * In the **ADD Identity** dialog, the following options: * Select the existing layout file *~/Pages/Shared/_Layout.cshtml* * Select the following files to override: * **Account/Register** * **Account/Manage/Index** * Select the **+** button to create a new **Data context class**. Accept the type (**WebApp1.Models.WebApp1Context** if the project is named **WebApp1**). * Select the **+** button to create a new **User class**. Accept the type (**WebApp1User** if the project is named **WebApp1**) > **Add**. * Select **ADD**. # [.NET Core CLI](#tab/netcore-cli) If you have not previously installed the ASP.NET Core scaffolder, install it now: ```cli dotnet tool install -g dotnet-aspnet-codegenerator ``` Add a package reference to [Microsoft.VisualStudio.Web.CodeGeneration.Design](https://www.nuget.org/packages/Microsoft.VisualStudio.Web.CodeGeneration.Design/) to the project (.csproj) file. Run the following command in the project directory: ```cli dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design dotnet restore ``` Run the following command to list the Identity scaffolder options: ```cli dotnet aspnet-codegenerator identity -h ``` In the project folder, run the Identity scaffolder: ```cli dotnet aspnet-codegenerator identity -u WebApp1User -fi Account.Register;Account.Manage.Index ``` ------------- Follow the instruction in [Migrations, UseAuthentication, and layout](xref:security/authentication/scaffold-identity#efm) to perform the following steps: * Create a migration and update the database. * Add `UseAuthentication` to `Startup.Configure`. * Add `` to the layout file. * Test the app: * Register a user * Select the new user name (next to the **Logout** link). You might need to expand the window or select the navigation bar icon to show the user name and other links. * Select the **Personal Data** tab. * Select the **Download** button and examined the *PersonalData.json* file. * Test the **Delete** button, which deletes the logged on user. ## Add custom user data to the Identity DB Update the `IdentityUser` derived class with custom properties. If you named the project WebApp1, the file is named *Areas/Identity/Data/WebApp1User.cs*. Update the file with the following code: [!code-csharp[Main](add-user-data/sample/Areas/Identity/Data/WebApp1User.cs)] Properties decorated with the [PersonalData](/dotnet/api/microsoft.aspnetcore.identity.personaldataattribute?view=aspnetcore-2.1) attribute are: * Deleted when the *Areas/Identity/Pages/Account/Manage/DeletePersonalData.cshtml* Razor Page calls `UserManager.Delete`. * Included in the downloaded data by the *Areas/Identity/Pages/Account/Manage/DownloadPersonalData.cshtml* Razor Page. ### Update the Account/Manage/Index.cshtml page Update the `InputModel` in *Areas/Identity/Pages/Account/Manage/Index.cshtml.cs* with the following highlighted code: [!code-csharp[Main](add-user-data/sample/Areas/Identity/Pages/Account/Manage/Index.cshtml.cs?name=snippet&highlight=28-36,63-64,87-95,120)] Update the *Areas/Identity/Pages/Account/Manage/Index.cshtml* with the following highlighted markup: [!code-html[Main](add-user-data/sample/Areas/Identity/Pages/Account/Manage/Index.cshtml?highlight=34-41)] ### Update the Account/Register.cshtml page Update the `InputModel` in *Areas/Identity/Pages/Account/Register.cshtml.cs* with the following highlighted code: [!code-csharp[Main](add-user-data/sample/Areas/Identity/Pages/Account/Register.cshtml.cs?name=snippet&highlight=8-16,43,44)] Update the *Areas/Identity/Pages/Account/Register.cshtml* with the following highlighted markup: [!code-html[Main](add-user-data/sample/Areas/Identity/Pages/Account/Register.cshtml?highlight=16-25)] Build the project. ### Add a migration for the custom user data # [Visual Studio](#tab/visual-studio) In the Visual Studio **Package Manager Console**: ```PMC Add-Migration CustomUserData Update-Database ``` # [.NET Core CLI](#tab/netcore-cli) ```cli dotnet ef migrations add CustomUserData dotnet ef database update ``` ------ ## Test create, view, download, delete custom user data Test the app: * Register a new user. * View the custom user data on the `/Identity/Account/Manage` page. * Download and view the users personal data from the `/Identity/Account/Manage/PersonalData` page.