654 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

Telesoccorso Lineaperta: Servizi di Telesoccorso
11.258 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
654 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]

Telesoccorso Lineaperta: Servizi di Telesoccorso
654 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

Telesoccorso Lineaperta: Servizi di Telesoccorso
654 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?

Telesoccorso Lineaperta: Servizi di Telesoccorso
11.258 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
654 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");
        }

Telesoccorso Lineaperta: Servizi di Telesoccorso
11.258 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.