Я знаю, что могу вернуть пользовательский ответ при использовании пользовательского провайдера аутентификации, как показано ниже:
Возврат пользовательского объекта ответа аутентификации из аутентификации ServiceStack
Мне просто интересно, есть ли способ вернуть пользовательский код ответа HTTP.
Например, при сбое аутентификации вместо несанкционированной ошибки 401 я хочу отправить другой код ответа HTTP, чтобы получить более подробную информацию о том, что не удалось. Например, когда учетная запись заблокирована, я отправлю код ошибки XYZ!
public class MyCredentialsAuthProvider : CredentialsAuthProvider
{
public override object Authenticate(ServiceStack.ServiceInterface.IServiceBase authService, IAuthSession session, Auth request)
{
//let normal authentication happen
var authResponse = (AuthResponse)base.Authenticate(authService, session, request);
//return your own class, but take neccessary data from AuthResponse
return new
{
UserName = authResponse.UserName,
SessionId = authResponse.SessionId,
ReferrerUrl = authResponse.ReferrerUrl,
SessionExpires = DateTime.Now
};
}
}
В попытке поймать я нашел способ вернуть пользовательский HTTP-код в эту функцию. Я возвращаюсь к примеру:
return new ServiceStack.HttpError(423, "Locked");
Я не уверен, что это правильный путь