De eerste benadering van Asp.Net Identity Database gebruiken

Ik moet de nieuwste MVC-versie van Asp.Net integreren met een bestaandedatabase die een extra kolom String Addressheeft naar tabel dbo.AspNetUsers

Ik moet een instantie ApplicationUsermaken die de eigenschap Address heeft.

Enig idee hoe je dit moet doen?


Antwoord 1, autoriteit 100%

Een mogelijke oplossing die voor mij werkt, in principe kan ik Asp.Net Identity-gebruikersprofielen integreren met een bestaande database.

De Asp.Identity-tabellen ophalen:

  • Maak een MVC-project met een individuele gebruikersaccount voor authenticatie
  • Open de DB die wordt vermeld onder de DefaultConnection in Web.config. Het zal worden genoemd (aspnet-[timestamp] of iets dergelijks.)
  • Script de databasetabellen met SQL Server Management Studio (database voor mdc bijvoegen).

U kunt ook iets gebruiken als http://identity.codeplex.com/

Integreren met uw bestaande database:

  • Voeg de gescripte tabellen in de bestaande database in SQL Server Management Studio in.
  • Aanpassen en toevoegen van relaties aan ApplicationUser (indien nodig).
  • Nieuw webproject maken > MVC > DB eerste project > DB importeren met EF … .
  • Wijzig in IdentityModels.cs de ApplicationDbContext :base(“DefaltConnection”) om de DbContext van uw project te gebruiken.

U hebt nu de Asp.Identity-tabellen in uw db met ER-model in uw toepassing.

Asp.Identity Profile Nieuwe eigenschappen toevoegen:

  • Entity Framework Code First Database Migrations inschakelen, ga gewoon in VS naar Tools ‘Package Manager Console’,
  • Voer het commando “Enable-Migrations” uit; Zodra we de databasemigraties hebben ingeschakeld, kunnen we doorgaan en nieuwe eigenschappen toevoegen voor ons gebruikersprofiel

  • Als u nieuwe eigenschappen wilt toevoegen, wijzigt u het bestand IdentityModels.cs, bijvoorbeeld:


public class ApplicationUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string EmailID { get; set; }
}

Nieuwe migratie toevoegen

  • Zodra we de eigenschappen hebben toegevoegd, brengt u de Package Manager Console en voert u de volgende opdracht uit.

    Migratie “YouMigrationName” toevoegen

Deze opdracht genereert een databasescriptbestand, voer nu de volgende opdracht uit om dit scriptbestand op de database uit te voeren.

Update-Database

Nu zullen alle nieuwe eigenschappen veranderen in tabelvelden in dezelfde databasetabel.

Ik hoop dat het anderen kan helpen, als je een beter idee hebt, laat het me dan weten.


Antwoord 2, autoriteit 38%

Ik ben erin geslaagd een bestaande database te integreren via Database First met Identity Framework 2.0. Ik heb er een blogbericht over geschreven hierdie ASP.NET MVC 5, Identity Framework 2.0 en de SPA-sjabloon van Visual Studio 2013 Update 2 RTM gebruikt.

Ik hoop dat dit iemand op zijn/haar reis helpt, want het bevat een paar punten die niet op één plek staan ​​vermeld en die ik zelf moest uitzoeken.


Antwoord 3, autoriteit 34%

Bekijk deze projecten op GitHub:

Waaronder:

  • SQL-databaseprojectsjabloon voor ASP.NET Identity 2.0
  • Entity Framework Database-First Provider(s)
  • Broncode en voorbeelden

voer hier de afbeeldingsbeschrijving in


Antwoord 4, autoriteit 2%

Ik had onlangs hetzelfde probleem. Ik had een applicatie gemaakt met de DBFirst-benadering en ik moest Identity toevoegen. Dit is wat ik deed.

  1. Installeer de volgende pakketten:
  1. Microsoft.EntityFrameworkCore
   2. Microsoft.EntityFrameworkCore.Design
   3. Microsoft.EntityFrameworkCore.SqlServer
   4. Microsoft.AspNetCore.Identity
   5. Microsoft.AspNetCore.Identity.EntityFrameworkCore
   6. Microsoft.AspNetCore.Aututhentication.JwtBearer
  1. Doe DbContext erven van IdentityDbContext, zoals dit:
public partial class BookStoresDBContext : IdentityDbContext
  1. OnModelCreating Ik heb de basisconstructor aangeroepen om een ​​fout als “‘IdentityUserLogin’ vereist een primaire sleutel om te definiëren” te voorkomen
protected override void OnModelCreating(ModelBuilder modelBuilder) {
     base.OnModelCreating(modelBuilder);
 }
  1. Voor zover het een gemaakt project was, was de StringConnection er al, zo niet, voeg het toe.

  2. Op de Startup.cs identiteitsservice configureren op ConfigureServices


public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<BookStoresDBContext>(options => options.UseSqlServer(Configuration.GetConnectionString("BookStoreDB")));
    services.AddIdentity<IdentityUser, IdentityRole>(options =>
    {
        options.Password.RequireDigit = true;
        options.Password.RequiredLength = 5;
    }).AddEntityFrameworkStores<BookStoresDBContext>()
    .AddDefaultTokenProviders();
}
  1. U kunt de verificatieservice ook configureren

    services.AddAuthentication(auth =>
    {
        auth.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
        auth.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
    }).AddJwtBearer(options => {
        options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidateAudience = true,
            RequireExpirationTime = true,
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Your key to encrypt"))
        };
    });
    
  2. Voer vervolgens de migratie uit vanuit de Package Manager Console

Add-Migration InitDb
  1. Verwijder in het migratiebestand alle migratieBuilder.CreateTable voor de tabellen die u al in uw database heeft

  2. De database bijwerken vanuit de Package Manager-console

Update-Database
  1. Dan ziet u de identiteitstabellen op uw db

voer hier de afbeeldingsbeschrijving in

Ik hoop dat het nuttig resultaat oplevert 😁


Antwoord 5

openbare klasse MyUser : IdentityUser
{
openbare virtuele MyUserInfo MyUserInfo { get; set; }
}

public class MyUserInfo{ 
    public int Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 
public class MyDbContext : IdentityDbContext<MyUserInfo> //Edited to MyUserInfo
{ 
    public MyDbContext() 
        : base("DefaultConnection") 
    { 
    } 
    public System.Data.Entity.DbSet<MyUserInfo> MyUserInfo { get; set; } 
 } 

Profielinformatie ophalen

Als de gebruiker zich aanmeldt, kunt u de profielinformatie als volgt weergeven:
Haal de huidige ingelogde UserIdop, zodat u de gebruiker kunt opzoeken in ASP.NET Identity system

var currentUserId = User.Identity.GetUserId(); 

Maak de UserManageraan in het ASP.Identity-systeem zodat u de gebruiker in het systeem kunt opzoeken

var manager = new UserManager<MyUser>(new UserStore<MyUser>(new MyDbContext())); 

Het gebruikersobject ophalen

var currentUser = manager.FindById(User.Identity.GetUserId()); 

De profielinformatie over de gebruiker ophalen

currentUser.MyUserInfo.FirstName 

Other episodes