65 messaggi dal 06 gennaio 2019
mexico77 ha scritto:
Vedi qui
https://code.msdn.microsoft.com/ASPNET-MVC-5-Security-And-44cbdb97


perdonami ma sto impazzendo...
NON RIESCO.
sto leggendo anche il libro di c#8 di aspitalia ma non riesco a trovare la soluzione al mio problema.

Forse sono stato un po impreciso allora ricapitolo.
Si tratta di un progetto MVC che gira in una intranet;
l'utente esegue il login attraverso Active Directory di Windows per poi andare a leggere un db dove sono presenti i ruoli di ognuno di essi;
A questo punto eseguito il login viene rendirizzato in base al ruolo ad un menu.

Gradirei proteggere le pagine con la stringa
[Authorize(Roles = "Admin")]

posta nel controller

Il problema è che non riesco a comprendere come associare all'utente il ruolo assegnato che risulta essere presente nel db, dove ovviamente, oltre il ruolo vi è la UserId dell'utente con tanto di password cifrata per poter cosi garantire in fase di login una verifica dell'utente.

Spero di essere stato chiaro.

Grazie mille a tutti per l'aiuto che mi vorrete dare.
84 messaggi dal 10 agosto 2019
per fare chiarezza potresti provare a scaricare il codice del libro "asp .net core 2" e guardare con attenzione
il codice dei capitoli 17 e 18,ciao
65 messaggi dal 06 gennaio 2019
surfernet123 ha scritto:
per fare chiarezza potresti provare a scaricare il codice del libro "asp .net core 2" e guardare con attenzione
il codice dei capitoli 17 e 18,ciao


Lo sto guardando...
mi sovviene un dubbio la mia applicazione non è ASP.NET Core ma ASP.NET Framework.
I principi sono i medesimi? oppure cambia qualcosa?
84 messaggi dal 10 agosto 2019
>>> mi sovviene un dubbio la mia applicazione non è ASP.NET Core ma ASP.NET Framework.
quando l'hai create cosa hai scelto?

identity dovrebbe valere per entrambi https://docs.microsoft.com/it-it/aspnet/identity/overview/getting-started/introduction-to-aspnet-identity
dalla pagina sopra : "ASP.NET Identity può essere utilizzato con tutti i framework ASP.NET, ad esempio ASP.NET MVC, Web Form, pagine Web, API Web e SignalR." ,ciao
65 messaggi dal 06 gennaio 2019
Buongiorno a tutti,
mi starò rimbecillendo ma sono giorni che provo e riprovo ma non ho capito come fare...
qualcuno potrebbe essere cosi gentile da postarmi qualche pezzo di codice da dove prendere spunto?
Sono davvero in difficoltà... non riesco a capire come definire il mio Db dal quale andare a prendere i ruoli...
Scusate ma adesso ho una gran confusione in testa...
84 messaggi dal 10 agosto 2019
parto dal presupposto che per te vada bene un progetto di tipo Asp .Net Core , nel codice di esempio del capitolo 18 puoi osservare:
nel file HomeController.cs viene aggiunto il ruolo di "Admnistrator". ad un utente ,riga 61

await userManager.AddClaimAsync(adminUser, new Claim(ClaimTypes.Role, "Administrator"));

nel file UserAdministrationController tutto il controller può esere acceduto solo da chi ha un roles "Administrator" riga 18

[Authorize(Roles = "Administrator")]


per quanto riguarda il database questo viene creato da visual studio,se crei un progetto nuovo di tipo asp .net core e scegli autenticazione "account utenti individuali" ed esegui il progetto aggiungendo un utente
e dopo vai al db indicato in appsettings.json trovi le tabelle per gestire gli utenti
Modificato da surfernet123 il 15 ottobre 2019 14:10 -
65 messaggi dal 06 gennaio 2019
surfernet123 ha scritto:
parto dal presupposto che per te vada bene un progetto di tipo Asp .Net Core , nel codice di esempio del capitolo 18 puoi osservare:
nel file HomeController.cs viene creato un utente aggiungendogli il ruolo di "Admnistrator".riga 61

await userManager.AddClaimAsync(adminUser, new Claim(ClaimTypes.Role, "Administrator"));

nel file UserAdministrationController tutto il controller può esere acceduto solo da chi ha un roles "Administrator" riga 18

[Authorize(Roles = "Administrator")]


per quanto riguarda il database questo viene creato da visual studio,se crei un progetto nuovo di tipo asp .net core e scegli autenticazione "account utenti individuali" ed esegui il progetto aggiungendo un utente
e dopo vai al db indicato in appsettings.json trovi le tabelle per gestire gli utenti


Ecco... il mio è un progetto ASP.Net Framework...
al momento ho già scritto parte dell'applicazione e in corso d'opera mi sono reso conto che avrei potuto, in maniera meno complicata, fare dei controlli sul ruoli.
Al momento ho già il mio DB dove viene registrato l'utente al quale assegno un Ruolo a seconda di quello che deve fare.
Per questo vorrei poter usare il mio DB. Ma forse è il caso che io scriva del codice che verifichi il ruolo e che mi reindirizzi alla View che desidero..

Oppure riesco ancora a automatizzare il tutto????
109 messaggi dal 30 novembre 2004
Ti faccio un esempio veloce... poi approfondisci:

Al login:
recupero l'utente
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, false);

switch (result)
{
case SignInStatus.Success:
var RuoloAdminId= _appCache.GetOrAdd("RuoloAdminId", () =>
{
return db.Roles.First(r => r.Name == "Admin").Id;
}, GlobalParameters.NotRemovablePolicy);

var CollaboratoreId = _appCache.GetOrAdd("CollaboratoreId ", () =>
{
return db.Roles.First(r => r.Name == "Collaboratore").Id;
}

if (user.HasRole(RuoloAdminId))
{
UserRole = "Admin";
returnUrl = Url.Action("Index", "DashBoardAdmin", null);
}

if (user.HasRole(CollaboratoreId ))
{
UserRole = "Collaboratore";
returnUrl = Url.Action("Index", "DashBoardCollaboratore", null);
}
return RedirectToLocal(returnUrl);
}


poi ho questa funzione....

protected ActionResult RedirectToLocal(string returnUrl)
{
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
return RedirectToAction("Index", "Home");
}

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.