ASP[DOT]NET Identity er et kraftfuldt og fleksibelt system til brugerhåndtering i ASP[DOT]NET-applikationer. Det giver dig mulighed for at implementere login, registrering, adgangskodehåndtering og roller med minimal indsats. I denne guide vil vi gennemgå, hvordan du installerer og konfigurerer ASP[DOT]NET Identity i et projekt, vise kodeeksempler og besvare almindelige spørgsmål.
Hvad er ASP[DOT]NET Identity?
ASP[DOT]NET Identity er en moderne autentificerings- og autorisationsramme, der erstatter ældre systemer som ASP[DOT]NET Membership. Det understøtter funktioner som tofaktorautentificering, eksterne logins (f.eks. Google eller Facebook) og tilpasning af brugerdata.
Forudsætninger
Før du starter, skal du have:
Trin-for-trin opsætning
1. Opret et nyt projekt
Start med at oprette et nyt ASP[DOT]NET Core-projekt i Visual Studio:
2. Installér Identity-pakker (hvis nødvendigt)
Hvis du arbejder med et tomt projekt, skal du tilføje Identity-pakker via NuGet. Åbn NuGet Package Manager og installer:
3. Konfigurér Identity i Program.cs
I ASP[DOT]NET Core 6 eller nyere sker konfigurationen i Program.cs. Tilføj følgende kode:
4. Opret forbindelsesstrengen
I appsettings.json skal du tilføje en forbindelsesstreng til din database:
5. Kør migrationer
Åbn Package Manager Console og kør:
Dette opretter databasetabellerne til Identity.
6. Tilføj registrering og login
ASP[DOT]NET Identity leverer færdige sider til registrering og login, hvis du bruger scaffolding. For at tilføje dem:
Alternativt kan du oprette en simpel controller til registrering:
Kodeeksempler
Login-funktion
Udl logning
FAQS – Ofte Stillede Spørgsmål
1. Hvorfor får jeg en fejl om "No DbContext"?
Sørg for, at din ApplicationDbContext er korrekt konfigureret i Program.cs, og at forbindelsesstrengen i appsettings.json peger på en gyldig database.
2. Kan jeg tilpasse brugerdata?
Ja! Opret en brugerklasse, der arver fra IdentityUser, og tilføj dine egne felter:
Opdater derefter IdentityDbContext til at bruge ApplicationUser.
3. Hvordan tilføjer jeg roller?
Brug RoleManager:
4. Hvad hvis jeg vil bruge en anden database end SQL Server?
Skift UseSqlServer til f.eks. UseSqlite eller UseInMemoryDatabase i Program.cs, og installer den relevante EF Core-pakke.
5. Hvordan sikrer jeg mine sider?
Brug [Authorize]-attributten på controllere eller metoder:
Afslutning
ASP[DOT]NET Identity gør det nemt at tilføje sikker og professionel brugerhåndtering til dine projekter. Med ovenstående trin og eksempler kan du hurtigt komme i gang. Eksperimentér med funktionerne, og tilpas dem til dine behov!
Hvad er ASP[DOT]NET Identity?
ASP[DOT]NET Identity er en moderne autentificerings- og autorisationsramme, der erstatter ældre systemer som ASP[DOT]NET Membership. Det understøtter funktioner som tofaktorautentificering, eksterne logins (f.eks. Google eller Facebook) og tilpasning af brugerdata.
Forudsætninger
Før du starter, skal du have:
- Visual Studio installeret (2022 anbefales).
- Et nyt eller eksisterende ASP[DOT]NET Core-projekt.
- Grundlæggende kendskab til C# og MVC eller Razor Pages.
Trin-for-trin opsætning
1. Opret et nyt projekt
Start med at oprette et nyt ASP[DOT]NET Core-projekt i Visual Studio:
- Vælg "ASP[DOT]NET Core Web App" (med MVC eller Razor Pages).
- Vælg "Individual Authentication" under autentificeringsindstillingerne for at få en grundlæggende Identity-opsætning med det samme.
2. Installér Identity-pakker (hvis nødvendigt)
Hvis du arbejder med et tomt projekt, skal du tilføje Identity-pakker via NuGet. Åbn NuGet Package Manager og installer:
Kode Vælg
Microsoft.AspNetCore.Identity.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer
3. Konfigurér Identity i Program.cs
I ASP[DOT]NET Core 6 eller nyere sker konfigurationen i Program.cs. Tilføj følgende kode:
Kode Vælg
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
var builder = WebApplication.CreateBuilder(args);
// Tilføj DbContext og Identity
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
builder.Services.AddIdentity<IdentityUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
builder.Services.AddControllersWithViews();
var app = builder.Build();
// Konfigurér middleware
app.UseAuthentication();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
// DbContext klasse
public class ApplicationDbContext : IdentityDbContext<IdentityUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
4. Opret forbindelsesstrengen
I appsettings.json skal du tilføje en forbindelsesstreng til din database:
Kode Vælg
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MinIdentityDb;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
5. Kør migrationer
Åbn Package Manager Console og kør:
Kode Vælg
Add-Migration InitialCreate
Update-Database
Dette opretter databasetabellerne til Identity.
6. Tilføj registrering og login
ASP[DOT]NET Identity leverer færdige sider til registrering og login, hvis du bruger scaffolding. For at tilføje dem:
- Højreklik på projektet > "Add" > "New Scaffolded Item".
- Vælg "Identity" og vælg de sider, du ønsker (f.eks. Register, Login).
Alternativt kan du oprette en simpel controller til registrering:
Kode Vælg
public class AccountController : Controller
{
private readonly UserManager<IdentityUser> _userManager;
private readonly SignInManager<IdentityUser> _signInManager;
public AccountController(UserManager<IdentityUser> userManager, SignInManager<IdentityUser> signInManager)
{
_userManager = userManager;
_signInManager = signInManager;
}
[HttpPost]
public async Task<IActionResult> Register(string email, string password)
{
var user = new IdentityUser { UserName = email, Email = email };
var result = await _userManager.CreateAsync(user, password);
if (result.Succeeded)
{
await _signInManager.SignInAsync(user, isPersistent: false);
return RedirectToAction("Index", "Home");
}
return View();
}
}
Kodeeksempler
Login-funktion
Kode Vælg
[HttpPost]
public async Task<IActionResult> Login(string email, string password)
{
var result = await _signInManager.PasswordSignInAsync(email, password, false, false);
if (result.Succeeded)
{
return RedirectToAction("Index", "Home");
}
return View();
}
Udl logning
Kode Vælg
[HttpPost]
public async Task<IActionResult> Logout()
{
await _signInManager.SignOutAsync();
return RedirectToAction("Index", "Home");
}
FAQS – Ofte Stillede Spørgsmål
1. Hvorfor får jeg en fejl om "No DbContext"?
Sørg for, at din ApplicationDbContext er korrekt konfigureret i Program.cs, og at forbindelsesstrengen i appsettings.json peger på en gyldig database.
2. Kan jeg tilpasse brugerdata?
Ja! Opret en brugerklasse, der arver fra IdentityUser, og tilføj dine egne felter:
Kode Vælg
public class ApplicationUser : IdentityUser
{
public string FuldtNavn { get; set; }
}
Opdater derefter IdentityDbContext til at bruge ApplicationUser.
3. Hvordan tilføjer jeg roller?
Brug RoleManager:
Kode Vælg
var roleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
await roleManager.CreateAsync(new IdentityRole("Admin"));
4. Hvad hvis jeg vil bruge en anden database end SQL Server?
Skift UseSqlServer til f.eks. UseSqlite eller UseInMemoryDatabase i Program.cs, og installer den relevante EF Core-pakke.
5. Hvordan sikrer jeg mine sider?
Brug [Authorize]-attributten på controllere eller metoder:
Kode Vælg
[Authorize]
public IActionResult HemmeligSide()
{
return View();
}
Afslutning
ASP[DOT]NET Identity gør det nemt at tilføje sikker og professionel brugerhåndtering til dine projekter. Med ovenstående trin og eksempler kan du hurtigt komme i gang. Eksperimentér med funktionerne, og tilpas dem til dine behov!