controllo ASP.NET MVC se l'utente appartiene [x] gruppo
-
20-09-2019 - |
Domanda
Forse sto avvicinando questo nel modo sbagliato e dovrebbe fare tutto quanto in filtri d'azione, in questo caso per favore mi punto nella giusta direzione!
Sono la creazione di mia applicazione ASP.NET MVC in modo che l'azione di un indice HomeController offre due diversi tipi di contenuti, in questo modo:
if(Request.IsAuthenticated)
return View("IndexRegistered");
else
return View("IndexGuest");
Questo va bene, ma dire che voglio dividerlo in tre modo che i membri di amministratore ottengono la loro pagina ...
if(Request.IsAuthenticated)
{
if( /* user is a member of administrators */)
return View("IndexAdministrator");
else
return View("IndexCustomer");
}
else
return View("IndexGuest");
Qualcuno può illuminarmi per il pezzo mancante di questo puzzle?
Soluzione
Utilizza il Roles
proprietà della Autorizza Operazione filtro :
[Authorize(Roles="Administrators,Moderators")]
public ActionResult SomeAction(){
}
In alternativa, utilizzare il metodo User.IsInRole()
:
if(User.IsInRole("Administrator")) { ... }
Altri suggerimenti
Se si guarda al provider di autenticazione che viene out-of-the-box nei MVC modelli di progetto di default è facile aggiungere il proprio supporto ruolo lì e la pista è in sessione, in modo che il codice di cui sopra sarebbe diventato:
if(Request.IsAuthenticated)
{
if(Session["Role"] == "Administrator")
return View("IndexAdministrator");
else
return View("IndexCustomer");
}
else
return View("IndexGuest");
e quindi apre possibilità come:
if(Request.IsAuthenticated)
return View("Index" + Session["Role"]);
else
return View("IndexGuest");