Come si effettua l'autorizzazione della pagina Web di unit test utilizzando ASP.NET MVC?

StackOverflow https://stackoverflow.com/questions/131723

  •  02-07-2019
  •  | 
  •  

Domanda

Supponiamo che tu abbia una pagina del profilo a cui può accedere solo il proprietario di quel profilo. Questa pagina del profilo si trova in:

Utente / Profilo / {userID}

Ora, immagino che per impedire l'accesso a questa pagina da parte di altri utenti, potresti strutturare la funzione Profilo della tua classe UserController per verificare l'identità della sessione corrente:

HttpContext.Current.User.Identity.Name

Se l'id corrisponde a quello nell'URL, si procede. Altrimenti reindirizzi a una sorta di pagina di errore.

La mia domanda è: come testate qualcosa del genere? Immagino che sia necessario utilizzare una sorta di iniezione di dipendenza invece di HttpContext nel controller per eseguire il controllo, ma non sono chiaro quale sia il modo migliore per farlo. Qualsiasi consiglio sarebbe utile.

È stato utile?

Soluzione 2

Ho finito con il " UserNameFilter " mostrato in post di blog . Funziona come un fascino e un test di unità facile.

Altri suggerimenti

Il link sopra è buono. Vorrei anche aggiungere che invece di controllare a livello di codice il valore User.Identity.Name, è necessario utilizzare gli attributi Autorizza come indicato nell'articolo:

http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx

Probabilmente puoi farlo usando un falso per il contesto del controller. Dai un'occhiata a questo articolo: http://stephenwalther.com/blog/archive/2008/07/01/asp-net-mvc-tip-12-faking-the-controller-context.aspx

Qui entra in gioco il derisione, con un falso HttpContext.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top