2012-09-17 2 views
0

초기에 java.ut의 예외적 인 지식을 읽었습니다. 이미 잘 정의 된 예외가있는 경우 고객 예외를 사용하지 말고 고객 예외를 사용하지 마십시오. 워크 플로우를 처리합니다. 나는이 점에 동의하고 그들은 절대적으로 옳다. 이제는이 시나리오를 어떻게 처리 할 것인지 생각하고있었습니다. 그것은 아주 간단합니다. 사용자 로그인.내 시나리오에서 고객 예외를 사용하는 방법

1 이름

이는 DAO 계층에서 알려진 내가 컨트롤러 레이어에 대한 유용한 정보를 채울해야한다

(궁극적으로) 잘못 2 암호를 존재 컨트롤러가 무슨 일이 있었는지 알려 유용한 힌트를 표시하지 보기에서.

은 내가 먼저 내가 이러한 의사입니다이

같이하고 있던 자바를 배울 때,

if(usernotexit) 
    {throw usernotExistException()} 
    if(password_wrong) 
    {throw passwordWrongException()} 

이 것이 좋습니다. 그렇지 않다면 어떻게 제대로 할 수 있습니까?

답변

0

스택이 예외를 잡아서 유용한 정보를 표시하는 것으로 가정하면이 일반적인 접근 방법에는 아무런 문제가 없습니다.

그러나이 경우 보안상의 예외 때문에 사용자에게 보내는 메시지의 두 조건을 구분하지 않는 것이 좋습니다. 사용자에게 잘못된 정보를 알려주는 경우이 정보를 사용하여 유효한 사용자를 조사 할 수 있습니다.

두 조건 중 하나라도 사용자에게 반환되는 응답은 "인증 실패"여야합니다. 그런 식으로 유용한 정보를 제공하지 않았습니다 (예를 들어, 사용자가 존재 함).

내부적으로는입니다. 로깅을 위해 케이스를 차별화 할 수 있습니다. 어느 것이 발생했는지 사용자에게 알려주지 마십시오. 이 두 가지 사례를 결합

0

시도 :

if(usernotexit || password_wrong) 
    { 
     throw user_password_Not_Match() 
    } 

그것의 안 좋은 관행은 사용자 이름이 올바르지 않거나 암호가 보안상의 이유인지 끝이-사용 말할 수 있습니다. 높은 보안 목적을 위해 일반적인 예외를 throw해야합니다.

관련 문제