2017-05-23 9 views
0

これで、ユーザーが特定のグループの広告に含まれているかどうかを確認し、その確認が許可されているかどうかを確認するカスタム許可属性を作成しました。何でも、これはすべて正常に動作します。try catchブロックからpartialviewを返そうとしています

問題ユーザーが認証されておらず、エラーページに戻ってきたがcatchステートメントからPartialViewを返せない場合や、同様の結果を得る方法がわからない場合は、以下の通りです。

public string Group { get; set; } 

protected override bool AuthorizeCore(HttpContextBase httpContext) 
{ 
    if (string.IsNullOrEmpty(Group)) 
    { 
     return true; 
    } 

    try 
    { 
    return LDAPHelper.isInGroup(username, Group); 
    } 
    catch (Exception ex) 
    { 
    return false; 
    } 
} 

}

+0

ユーザがグループに属していない場合、 'LDAPHelper.isInGroup(username、Group);'はfalseを返しますか? – FortyTwo

+0

申し訳ありませんが、私はこの質問を急いで、さらに詳細を追加する必要があります、実際に私はfalse値を返しますが、認証されていない場合、このfalse値で、私はエラーページを返すように探しています。 –

+0

それではなぜ 'try..catch'ブロックが必要ですか?どうして 'if(!LDAPHelper.isInGroup(username、Group))'を持っていなくて、あなたのページを返すのですか? – FortyTwo

答えて

0

適切な例外処理と投げ約2つの記事は、私がキャッチ例外のようなものは、問題の説明コードでポップアップするたびに必要な読書を検討すること、あります

間違った権限を持つことに関する例外を投げ出すことは、逃げようとする可能性があります。いずれにしても、例外をキャッチすることは本当に悪い考えです。

+0

記事をありがとう、私はそれらを見て、あなたは例外をキャッチする例外が悪い理由を精緻化できますか? –

+0

致命的な例外(OOM、Index out of Bounds)を捕まえることになり、診断が不可能な大量で予期しないフォローアップの問題が発生します。あなたが期待している機能だけをキャッチし、何も致命的ではない。 大きな問題は、「不十分な権利」に関する例外を投げることが例外を悩ませる場合であるかどうかです。この種の例外は境界にあります。そして、それが賢明な考えであれば、あなたが一般的にどのようにプログラムの流れを行うかによって異なります。 paritcualrでは、このケースがどのくらい起こる可能性が高いかが重要です。可能性の高いケースについては例外を投げないでください。 – Christopher

関連する問題