2012-09-09 5 views

risposta

4

Dipende dall'ambito. "Autenticato utente non è autorizzato /" situazione

In logica di business strato è eccezionale, e dovrebbe portare ad eccezione di runtime, ad esempio (codice Java):

public String salutation(User user) { 
    // may lead to a runtime exception if user is not authorized 
    return String.format("Hello, %s!", user.getName()); 
} 

Attuazione della User (è un'interfaccia , ovviamente) restituirà il nome dell'utente o pubblicherà uno NonAuthenticatedException in getName().

In controllo degli accessi stato di autorizzazione utente/autenticazione strato viene trattata come qualsiasi altra stati normali, e non dovrebbe essere trattato come situazione eccezionale, ad esempio:

if (!user.isAuthenticated()) { 
    httpResponse.addHeader("WWW-Authenticate", "Basic realm=\"secure content\""); 
} 
+0

Grazie, yeh che è la logica, ma nel primo esempio Business Logic, dove dovrebbe essere l'eccezione? potresti per favore espandere l'esempio includendo il codice che genera l'eccezione e il codice che lo gestisce, mi dispiace ma sono un po 'confuso – Abdullah

+1

Ho aggiornato la mia risposta. 'User' è un'interfaccia che verrà implementata con un utente autenticato che restituisce il suo nome da' getName() 'o un utente anonimo che lancia un'eccezione. – yegor256

+0

questo è chiaro, grazie. – Abdullah

1

Sì, è una buona pratica per gestire l'autenticazione \ autorizzazioni tramite eccezioni perché:

1) Un'eccezione è una situazione anomala che il sistema non piace e quindi attraverso la gestione delle eccezioni stiamo reagendo a questa situazione . Le eccezioni di autenticazione e autorizzazione sono sostanzialmente violazioni della sicurezza, ad esempio le anomalie del sistema ed è una buona pratica rispondere alle violazioni. Il framework di gestione delle eccezioni è un meccanismo popolare per segnalare le violazioni \ anomalie del sistema e quindi usiamo questo framework per reagire a tali situazioni.

Ecco perché tutti i framework comuni (incluso .NET) dispongono di Auth. classi di eccezione per incapsulare gli errori .

Problemi correlati