Hitelesítés és Identity migrálása a ASP.NET Core-ba
Készítette: Steve Smith
Az előző cikkben migrált konfigurációt egy ASP.NET MVC-projektből ASP.NET Core MVC. Ebben a cikkben migráljuk a regisztrációs, bejelentkezési és felhasználókezelési funkciókat.
Identity és tagság konfigurálása
ASP.NET MVC-ben a hitelesítési és identitásfunkciók a Startup.Auth.cs
és IdentityConfig.cs
ASP.NET Identity használatával vannak konfigurálva, amely a App_Start mappában található. A ASP.NET Core MVC-ben ezek a funkciók Startup.cs
konfigurálva vannak.
Telepítse a következő NuGet-csomagokat:
Microsoft.AspNetCore.Identity.EntityFrameworkCore
Microsoft.AspNetCore.Authentication.Cookies
Microsoft.EntityFrameworkCore.SqlServer
Figyelmeztetés
Ez a cikk a kapcsolati sztringek használatát mutatja be. Helyi adatbázis esetén a felhasználót nem kell hitelesíteni, de éles környezetben a kapcsolati sztringek néha tartalmaznak jelszót a hitelesítéshez. Az erőforrás-tulajdonosi jelszóval történő hitelesítés (ROPC) olyan biztonsági kockázatot jelent, amelyet el kell kerülni a termelési adatbázisokban. A gyártási alkalmazásoknak az elérhető legbiztonságosabb hitelesítési folyamatot kell használniuk. A tesztelési vagy éles környezetekben üzembe helyezett alkalmazások hitelesítéséről további információt a Biztonságos hitelesítési folyamatokcímű témakörben talál.
A Startup.cs
frissítse a Startup.ConfigureServices
metódust az Entity Framework és Identity szolgáltatások használatára:
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();
}
A fenti kódban jelenleg két típusra hivatkozunk, amelyeket még nem migráltunk a ASP.NET MVC-projektből: ApplicationDbContext
és ApplicationUser
. Hozzon létre egy új Modellek mappát a ASP.NET Core projektben, és adjon hozzá két osztályt az ilyen típusúaknak megfelelően. Ezen osztályok ASP.NET MVC-verzióit a /Models/IdentityModels.cs
találja, de osztályonként egy fájlt fogunk használni az áttelepített projektben, mivel ez egyértelműbb.
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);
}
}
}
A ASP.NET Core MVC Starter Web-projekt nem tartalmazza a felhasználók vagy a ApplicationDbContext
testreszabását. Valós alkalmazás áttelepítésekor az alkalmazás felhasználói és DbContext
osztályainak összes egyéni tulajdonságát és metódusát, valamint az alkalmazás által használt egyéb modellosztályokat is át kell telepítenie. Ha például a DbContext
rendelkezik DbSet<Album>
, át kell telepítenie a Album
osztályt.
Ha ezek a fájlok a helyükön vannak, a Startup.cs
fájl a using
utasításainak frissítésével fordítható le.
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
Az alkalmazás mostantól támogatja a hitelesítést és Identity szolgáltatásokat. Csak ezeket a funkciókat kell a felhasználók számára elérhetővé tenni.
Regisztrációs és bejelentkezési logika migrálása
Az Entity Framework és az SQL Server használatával konfigurált alkalmazáshoz és adathozzáféréshez konfigurált Identity szolgáltatásokkal készen állunk arra, hogy támogatást nyújtsunk a regisztrációhoz és az alkalmazásba való bejelentkezéshez. Ne feledje, hogy a migrálási folyamat korábbi a _Layout.cshtml
_LoginPartial hivatkozását fűztük hozzá. Most már itt az ideje, hogy visszatérjen a kódhoz, törölje a megjegyzéseket, és hozzáadja a szükséges vezérlőket és nézeteket a bejelentkezési funkciók támogatásához.
Az _Layout.cshtml
fájlban törölje az @Html.Partial
elől a megjegyzés jelet:
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
@*@Html.Partial("_LoginPartial")*@
</div>
</div>
Most vegyen fel egy _LoginPartial nevű új Razor nézetet a Nézetek/Megosztott mappába:
Frissítse _LoginPartial.cshtml
a következő kóddal (cserélje le az összes tartalmát):
@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>
}
Ezen a ponton frissítenie kell a webhelyet a böngészőben.
Összefoglalás
ASP.NET Core a ASP.NET Identity funkcióinak változásait mutatja be. Ebben a cikkben megismerhette, hogyan migrálhatja a ASP.NET Identity hitelesítési és felhasználókezelési funkcióit ASP.NET Core-ba.