2012-06-29 2 views
0

Я начал разрабатывать API REST для моего C# /. Net приложения WCF.Пользовательский UserNamePasswordValidator с подробной информацией о возврате?

Я использую базовую HTTP-аутентификацию с помощью настраиваемого UserNamePasswordValidator. Он аутентифицирует мои методы API.

Он основан на этом примере кода, и я мог бы заставить его работать без каких-либо проблем:

public class CustomUserNameValidator : UserNamePasswordValidator 
{ 
    public override void Validate(string userName, string password) 
    { 

     if (null == userName || null == password) 
     { 
      throw new ArgumentNullException("You must provide both the username and password to access this service"); 
     } 

     if (!(userName == "user1" && password == "test") && !(userName == "user2" && password == "test")) 
     { 
      throw new FaultException("Unknown Username or Incorrect Password"); 
     } 
    } 
} 

При сбое проверки подлинности, я не могу отправить обратно ничего, но «401 Несанкционированное» клиенту. Я знаю, что так оно и должно быть, но возможно ли в какой-то момент отправить некоторую подробную информацию моему абоненту? Некоторое настроенное сообщение об ошибке или более подробная информация. Если нет, у моего клиента только аутентификация не удалось получить http info, и этого недостаточно в моем случае.

ответ

2

может быть, вы должны использовать WebFaultException <>, в моем случае я использовал так: throw new WebFaultException<string>("Bad Request", HttpStatusCode.Unauthorized);

+0

UserNamePasswordValidator является ** Аутентификация ** расширяемость и не ** Авторизация ** но использование HttpStatusCode.Unauthorized все еще правильна, как [HTTP RFC2616 10.4.2 указывает] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html), что 401 Несанкционированное на самом деле означает ** Аутентификация **. –

Смежные вопросы