1

アイテムレベルのセキュリティを試みています。私は次のようなサービスを持っています:

[DefaultView("Customer")]
public class CustomerService : MyServiceBase
{
    public object Get(CustomerRequest request)
    {
         if (UserIsAuthorizedForCustomer(request.Id))
         {
             return new CustomerResponse { Customer = GetCustomer(request.Id) };
         }
         else
         {
             return this.Redirect("/AccessDenied.htm");
         }
    }
}

私が抱えている問題は、認証チェックが失敗し、サービスがリダイレクト応答を返したときに、かみそりのページがまだ実行されているように見えますが、モデルがnullの場合はNullReferenceExceptionが発生することです。私は何か間違ったことをしていますか?

ありがとう!

4

1 に答える 1

1

の実装が何をするのかわかりませんRedirectが、エラー ページにリダイレクトする通常の方法は、AppHost で設定されたリダイレクト ルールに従って例外をスローすることです。例えば:

if (!UserIsAuthorizedForCustomer(request.Id))
    throw new UnauthorizedException("Not Authorized");

AppHost では、さまざまなエラー コードに対してさまざまなリダイレクト ページを指定できます。たとえば、次のようになります。

SetConfig(new EndpointHostConfig {
    CustomHttpHandlers = {
        { HttpStatusCode.NotFound, new RazorHandler("/notfound") },
        { HttpStatusCode.Unauthorized, new RazorHandler("/login") },
    }
});

または、1 ページだけが必要な場合は、未処理のエラーのフォールバックを指定できます。

SetConfig(new EndpointHostConfig {
    GlobalHtmlErrorHttpHandler = new RazorHandler("/error")
});
于 2013-01-09T02:03:32.330 に答える