Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Autor: Steve Smith
W poprzednim artykule zmigrowaliśmy konfigurację z projektu MVC ASP.NET do ASP.NET Core MVC. W tym artykule migrujemy funkcje rejestracji, logowania i zarządzania użytkownikami.
Konfigurowanie Identity i członkostwo
W ASP.NET MVC funkcje uwierzytelniania i tożsamości są konfigurowane przy użyciu ASP.NET Identity w Startup.Auth.cs i IdentityConfig.cs, znajdujących się w folderze App_Start. W usłudze ASP.NET Core MVC te funkcje są konfigurowane w programie Startup.cs.
Zainstaluj następujące pakiety NuGet:
Microsoft.AspNetCore.Identity.EntityFrameworkCoreMicrosoft.AspNetCore.Authentication.CookiesMicrosoft.EntityFrameworkCore.SqlServer
Ostrzeżenie
W tym artykule przedstawiono użycie łańcuchów połączenia. W przypadku lokalnej bazy danych użytkownik nie musi być uwierzytelniany, ale w środowisku produkcyjnym parametry połączenia czasami zawiera hasło do uwierzytelniania. Poświadczenie hasła właściciela zasobu (ROPC) jest zagrożeniem bezpieczeństwa, którego należy unikać w produkcyjnych bazach danych. Aplikacje produkcyjne powinny korzystać z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Aby uzyskać więcej informacji na temat uwierzytelniania aplikacji wdrożonych w środowiskach testowych lub produkcyjnych, zobacz Bezpieczne przepływy uwierzytelniania.
W Startup.csprogramie zaktualizuj metodę Startup.ConfigureServices tak, aby korzystała z programu Entity Framework i Identity usług:
public void ConfigureServices(IServiceCollection services)
{
// Add EF services to the services container.
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddMvc();
}
W tym momencie istnieją dwa typy, do których odwołujemy się w powyższym kodzie, które nie zostały jeszcze zmigrowane z projektu ASP.NET MVC: ApplicationDbContext i ApplicationUser. Utwórz nowy folder Models w projekcie ASP.NET Core i dodaj do niego dwie klasy odpowiadające tym typom. Wersje MVC tych klas ASP.NET znajdują się w /Models/IdentityModels.cspliku , ale użyjemy jednego pliku na klasę w zmigrowanym projekcie, ponieważ jest to bardziej jasne.
ApplicationUser.cs:
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
namespace NewMvcProject.Models
{
public class ApplicationUser : IdentityUser
{
}
}
ApplicationDbContext.cs:
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.Data.Entity;
namespace NewMvcProject.Models
{
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Customize the ASP.NET Core Identity model and override the defaults if needed.
// For example, you can rename the ASP.NET Core Identity table names and more.
// Add your customizations after calling base.OnModelCreating(builder);
}
}
}
Projekt sieci Web ASP.NET Core MVC Starter nie obejmuje wielu dostosowań użytkowników ani .ApplicationDbContext Podczas migrowania rzeczywistej aplikacji należy również przeprowadzić migrację wszystkich właściwości niestandardowych i metod użytkowników i DbContext klas aplikacji, a także innych klas modelu używanych przez aplikację. Jeśli na przykład DbContext masz klasę DbSet<Album>, musisz przeprowadzić migrację Album klasy.
Po wprowadzeniu tych plików plik można skompilować, Startup.cs aktualizując jego using instrukcje:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
Nasza aplikacja jest teraz gotowa do obsługi uwierzytelniania i Identity usług. Wystarczy, że te funkcje będą widoczne dla użytkowników.
Migrowanie logiki rejestracji i logowania
W przypadku Identity usług skonfigurowanych dla aplikacji i dostępu do danych skonfigurowanych przy użyciu programu Entity Framework i programu SQL Server możemy dodać obsługę rejestracji i logowania do aplikacji.
Usuń komentarz z wiersza w pliku @Html.Partial_Layout.cshtml:
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
@*@Html.Partial("_LoginPartial")*@
</div>
</div>
Teraz dodaj nowy Razor widok o nazwie _LoginPartial do folderu Views/Shared :
Zaktualizuj _LoginPartial.cshtml za pomocą następującego kodu (zastąp całą jego zawartość):
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
@if (SignInManager.IsSignedIn(User))
{
<form asp-area="" asp-controller="Account" asp-action="Logout" method="post" id="logoutForm" class="navbar-right">
<ul class="nav navbar-nav navbar-right">
<li>
<a asp-area="" asp-controller="Manage" asp-action="Index" title="Manage">Hello @UserManager.GetUserName(User)!</a>
</li>
<li>
<button type="submit" class="btn btn-link navbar-btn navbar-link">Log out</button>
</li>
</ul>
</form>
}
else
{
<ul class="nav navbar-nav navbar-right">
<li><a asp-area="" asp-controller="Account" asp-action="Register">Register</a></li>
<li><a asp-area="" asp-controller="Account" asp-action="Login">Log in</a></li>
</ul>
}
Na tym etapie powinno być możliwe odświeżenie witryny w przeglądarce.
Podsumowanie
ASP.NET Core wprowadza zmiany w funkcjach ASP.NET Identity . W tym artykule przedstawiono sposób migrowania funkcji uwierzytelniania i zarządzania użytkownikami ASP.NET Identity do ASP.NET Core.
ASP.NET Core