2012-09-09 19 views

Respuesta

4

Depende del alcance. "Autenticada usuario no está autorizado /" situación

En lógica de negocio capa es excepcional, y debería conducir a excepción de tiempo de ejecución, por ejemplo (código Java):

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

Aplicación de User (Es una interfaz , por supuesto) devolverá el nombre del usuario o lanzará un NonAuthenticatedException en getName().

En control de acceso capa estado de autorización de usuario/autenticación se procesa como cualquier otro estado de normales, y no debe ser tratado como situación excepcional, por ejemplo:

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

Gracias, Yeh que es lógica, pero en el primer ejemplo Business Logic, ¿dónde debería estar la excepción? podría ampliar el ejemplo incluyendo el código que arroja la excepción y el código que lo maneja, lo siento pero estoy un poco confundido – Abdullah

+1

He actualizado mi respuesta. 'User' es una interfaz que se implementará con un usuario autenticado que devuelve su nombre de' getName() 'o un usuario anónimo que lanza una excepción. – yegor256

+0

eso está claro, gracias. – Abdullah

1

Sí, es una buena práctica para manejar la autenticación \ autorizaciones a través de excepciones porque:

1) Una excepción es una situación anómala que el sistema no le gusta y por lo tanto a través de manejo de excepciones estamos reaccionando a esa situación . Las excepciones de Autenticación y Autorización son básicamente violaciones de seguridad, es decir, anomalías del sistema , y es una buena práctica responder a las violaciones. El marco de manejo de excepciones es , un mecanismo popular para informar anomalías de violaciones \ del sistema y, por lo tanto, usamos este marco para reaccionar ante tales situaciones.

Es por eso que todos los frameworks populares (incluyendo .NET) tienen Auth. clases de excepción para encapsular errores .

Cuestiones relacionadas