Ciao Moreno,
ho fatto un po di test per capire un pò come funziona il CORE, andati bene i test preliminari ora procedo con i test di conversione dall'app web al core così da fare sole chiamate al core e sfruttarlo per il futuro.
Abbiamo acquistato un template che può essere convertito in un'app utilizzando PhoneGap o Cordova.
A questo punto mi viene spontanea una domanda, per fare le richieste all' API ho abilitato i CORS inserendo una policy(Quindi ora si accede liberamente, al max ho visto che si può mettere la fonte da cui accettare le richieste)
Qualche giorno fa ho partecipato ad una sessione proprio sul CORE, e si è parlato del token JWT e penso sia utile implementarlo.
L'applicazione funzionerà in questo modo:
Ho già un database con una serie di dati degli utenti, per accedere ai loro dati dovranno registrarsi( in autonomia ),
ES: inseriranno il CF, verifico se esiste sul DB Esistente, se il CF esiste potranno registrarsi e nome utente e password verranno inseriti nel DB di supporto (creato apposta per le registrazioni).
premetto che le 2 applicazioni (CORE e CLIENT) sono sulla stessa macchina.
Stavo leggendo questa guida:
http://www.aspitalia.com/script/1288/Autenticazione-JWT-Token-ASP.NET-Core-Web-API.aspx Se ho capito bene, dovrei procedere prima la con l'inserimento nel CORE delle classi EF per la gestione di registrazione e login, e successivamente applicare la guida in modo che dopo il login venga rilasciato il token. Giusto?
AGGIORNAMENTO:
ho creato un applicazione MVC di prova e generato il DB classico che viene creato quando si registra un utente.
Poi ho cercato di tirar fuori qualcosa di buono da queste 2 guide:
https://docs.microsoft.com/it-it/ef/core/get-started/aspnetcore/existing-db https://docs.microsoft.com/it-it/ef/core/get-started/aspnetcore/new-db?tabs=visual-studio Quindi ho collegato il database e mi sono generato tramite il comando
le classi contenenti equivalenti alle tabelle presenti nel DB. Quindi tra le mie classi ho delle classi che in un applicazione MVC non ci sono. ( AspNetUser, AspNetRoles, ecc.. )
Ho creato un controller API chiamato Account, e ho messo questo codice:
// POST: api/Account
[HttpPost]
public void PostAsync([FromBody] RegisterViewModel model)
{
var user = new AspNetUsers { Id=Guid.NewGuid().ToString(), UserName = model.Email, Email = model.Email };
db.Add(user);
db.SaveChangesAsync();
// return Get(""); vani i tentativi di ritornare qualcosa, solo con questo commentato sono riuscito a scrivere nel DB
}
questo aimè è stato l'unico modo in cui sono riuscito a scrivere nel DB, non usando quindi Idenity.
Come posso fare per implementare idenitity nel core?
o se c'è un sistema equivalente per core...
AGGIORNAMENTO:
Ho trovato una guida non so se posso pubblicare il link.. comunque sembra faccia al caso mio, permette la creazione, il login e il token JWT ( nel controller non come la tua guida che cercherò di implementare per non metterlo nel controller ) una delle differenze è anche nella password, a differenza di entity che utilizza varchar e MD5, questa utilizza byte e HASH 512, anche se ho fatto la conversione per testarla ed ho usato string, ora mi sono generato un db con la modalità descritta sopra e ho inserito byte anche io,se posso pubblicare il link te la faccio vedere così magari sto tranquillo che è valida ed è all'altezza di idenity.
Ho però notato che in startup.cs mi segnala come deprecato il metodo "ILoggerFactory"
di seguito il mio codice:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
// global cors policy
app.UseCors(x => x
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
app.UseAuthentication();
app.UseMvc();
}
vani sono stati i tentavi di risolvere, visual studio mi suggerisce di utilizzare ILoggingBuilder, che ho provato ad utilizzare così
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggingBuilder loggerBuilder)
{
loggerBuilder.AddConfiguration(Configuration.GetSection("Logging"));
loggerBuilder.AddConsole();
loggerBuilder.AddDebug();
// global cors policy
app.UseCors(x => x
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
app.UseAuthentication();
app.UseMvc();
}
L'utente però non viene mappato, esegue l'autenticazione ma poi al primo get che faccio la perde, ho provato
guide in rete ma l'utente continua a non essere mappato.
Modificato da Mirko2018 il 27 dicembre 2018 16.40 -