0

最初は、java.jdk で既に明確に定義された例外がある場合は顧客例外を使用しない、ワークフローを処理するために顧客例外を使用しないなど、いくつかの提案をしました。私はこれらの点に同意し、完全に正しい. 今、私はこのシナリオをどのように処理するかを考えていました。それは非常に簡単です。ユーザーログイン。

1 ユーザー名が存在しない 2 パスワードが間違っている

これらはDAOレイヤーで認識されるため、コントローラーレイヤーに(最終的に)有用な情報を入力し、コントローラーに何が起こっているかを知らせ、ビューに有用なヒントを表示する必要があります。

私が最初にJavaを学んだとき、私はこのようにしていた

これらは疑似コードです。

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

これは良い習慣ですか?そうでない場合、適切に行う方法は?

4

2 に答える 2

0

スタックの上位にあるコードが例外をキャッチし、有用な情報を表示していると仮定すると、この一般的なアプローチに問題はありません。

ただし、この場合のセキュリティ例外については、ユーザーへのメッセージでこれら 2 つの条件を区別しないことが賢明です。どちらが間違っているかをユーザーに伝えると、この情報を使用して有効なユーザーを調べることができます。

どちらの条件でも、ユーザーに返される応答は「認証に失敗しました」である必要があります。そうすれば、有用な情報 (たとえば、ユーザーが存在するなど) を提供することはありません。

内部的には、ログ記録のためにケースを区別したい場合があることに注意してください。どちらが発生したかをユーザーに伝えないでください。

于 2012-09-17T03:41:22.657 に答える
0

次の 2 つのケースを組み合わせてみてください。

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

ユーザー名が間違っているか、パスワードがセキュリティ上の理由であるかをエンドユーザーに伝えることはお勧めできません。セキュリティを高めるために、一般的な例外をスローする必要があります。

于 2012-09-17T03:44:26.597 に答える