Ho un certo numero di controller che accettano un "sito" come parametro all'interno delle loro azioni, in questo modo:
[AuthoriseSite]
public ActionResult Index(string site) {
var model = gvmFactory.CreateAnIndexViewModel(site);
return View("Index", model);
}
Ho passato il sito come parametro, ma potrei anche calcolarlo dal profilo di appartenenza di un utente, quindi il mio codice potrebbe essere simile a:
[AuthoriseSite]
public ActionResult Index() {
string site = UserProfileService.GetUsersSite();
var model = gvmFactory.CreateAnIndexViewModel(sitename);
return View("Index", model);
}
Il parametro del sito può variare in base al ruolo dell'utente. Gli utenti che sono amministratori possono scegliere molti siti diversi, mentre i non amministratori possono utilizzare solo quello a cui appartengono.
La mia domanda è, qual è la prassi migliore?
Preferisco il primo, mi sembra più simile a MVC, anche se questo potrebbe essere solo che ho sempre avuto la tendenza a farlo. Il secondo ha alcuni vantaggi nel fatto che gli URL non possono essere modificati in modo che i non amministratori possano vedere i siti che non dovrebbero. Tuttavia, il filtro [AuthoriseSite] impedisce questo.