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?

È stato utile?

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");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top