668 messaggi dal 18 febbraio 2002
www.dimsolutions.it
Salve a tutti,
sono alle prime armi con Asp.Net Core, dovrei implementare un'area riservata del sito (backoffice), dal vostro libro ho letto che il metodo migliore è utilizzare Identity.

Utenti, Password e Gruppi che devono essere autenticati sono su 2 Tabelle MySQL. Vorrei se possibile non utilizzare Entity Framework perchè non lo conosco... è possibile?

Avete dei consigli e esempi su come mi devo muovere in questo scenario?

Grazie
11.884 messaggi dal 09 febbraio 2002
Contributi
Ciao Diego,


Vorrei se possibile non utilizzare Entity Framework perchè non lo conosco...

Questa non è propriamente una motivazione valida. Il tempo che impiegherai a sviluppare un backend per ASP.NET Core Identity potrebbe essere meglio impiegato studiando Entity Framework Core. Poi, se non ti piace o se non si adatta alle esigenze del tuo committente, sei libero di non usarlo ma almeno faresti questa scelta con cognizione di causa.

Comunque... sì, è possibile usare ASP.NET Core Identity senza Entity Framework Core. Devi costruire un tuo userstore che implementa una serie di interfacce per consentirgli di recuperare e risalvare gli utenti.
https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity-custom-storage-providers?view=aspnetcore-2.2#customize-the-user-store

ciao,
Moreno

Enjoy learning and just keep making
668 messaggi dal 18 febbraio 2002
www.dimsolutions.it
BrightSoul ha scritto:
Ciao Diego,


Vorrei se possibile non utilizzare Entity Framework perchè non lo conosco...

Questa non è propriamente una motivazione valida. Il tempo che impiegherai a sviluppare un backend per ASP.NET Core Identity potrebbe essere meglio impiegato studiando Entity Framework Core. Poi, se non ti piace o se non si adatta alle esigenze del tuo committente, sei libero di non usarlo ma almeno faresti questa scelta con cognizione di causa.[/url]
668 messaggi dal 18 febbraio 2002
www.dimsolutions.it
BrightSoul ha scritto:
Ciao Diego,


Vorrei se possibile non utilizzare Entity Framework perchè non lo conosco...

Questa non è propriamente una motivazione valida. Il tempo che impiegherai a sviluppare un backend per ASP.NET Core Identity potrebbe essere meglio impiegato studiando Entity Framework Core. Poi, se non ti piace o se non si adatta alle esigenze del tuo committente, sei libero di non usarlo ma almeno faresti questa scelta con cognizione di causa.[/url]


Mi hai convinto, effettivamente vedrò di leggere il capitolo dedicato sul vostro libro a Entity Framework (anche solo per avere un'idea) poi successivamente seguirò il tuo articolo di qualche giorno fa per realizzare la mia area riservata con db MySQL:
http://www.aspitalia.com/articoli/asp.net-core/personalizzare--aspnet-core-identity.aspx

Grazie
668 messaggi dal 18 febbraio 2002
www.dimsolutions.it
Ho implemento con successo l'esempio http://www.aspitalia.com/articoli/asp.net-core/personalizzare--aspnet-core-identity.aspx di Identity se avessi bisogno di cambiare il nome delle tabelle per mia necessità?

come procedo?
11.884 messaggi dal 09 febbraio 2002
Contributi

Ho implemento con successo l'esempio


Ok, ottimo! Adesso per cambiare i nomi delle tabelle vai nel metodo OnModelCreating dell'ApplicationDbContext e fai così:
modelBuilder.Entity<ApplicationUser>().ToTable("NomeTabellaUtenti");


Col metodo ToTable puoi ridefinire il nome della tabella degli utenti. Lo stesso puoi anche per le altre entità di Identity. Prova così, fammi sapere se funziona:
modelBuilder.Entity<IdentityRole>().ToTable("NomeTabellaRuoli");
modelBuilder.Entity<IdentityUserLogin<string>>().ToTable("NomeTabellaLoginUtente");
modelBuilder.Entity<IdentityUserRole<string>>().ToTable("NomeTabellaRuoliUtente");
modelBuilder.Entity<IdentityUserClaim<string>>().ToTable("NomeTabellaClaimUtente");


Per curiosità, puoi vedere che mapping viene fatto dalla classe IdentityDbContext se guardi qui il codice sorgente.
https://github.com/aspnet/AspNetCore/blob/33d42551acdd59ce0d28a9b98e8921b8969ec648/src/Identity/EntityFrameworkCore/src/IdentityDbContext.cs#L120

ciao,
Moreno

Enjoy learning and just keep making
668 messaggi dal 18 febbraio 2002
www.dimsolutions.it
boh non mi sembra funzionare quando ricompilo il progetto:
MySqlException: Table 'aspidentitymysql.nometabellautenti' doesn't exist


        protected override void OnModelCreating(ModelBuilder builder) {
            base.OnModelCreating(builder);
            builder
                .Entity<UserAddress>(entityBuilder => {
                    entityBuilder.ToTable("UserAddresses");
                    entityBuilder
                        .HasOne<ApplicationUser>()
                        .WithMany(user => user.Addresses)
                        .HasForeignKey(userAddress => userAddress.UserId)
                        .OnDelete(DeleteBehavior.Cascade);
                })

                .Entity<ApplicationUser>().ToTable("NomeTabellaUtenti");
        }
11.884 messaggi dal 09 febbraio 2002
Contributi

MySqlException: Table 'aspidentitymysql.nometabellautenti' doesn't exist

E' normale se la tabella non esiste. Tu come la vuoi chiamare la tabella degli utenti?
Stai usando l'approccio code first o database first?

Se usi code first, devi creare una migration e aggiornare lo schema del database.
Se usi database first, devi essere tu a rinominare la tabella come preferisci.

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.