Я использую JsonServiceClient в своем приложении для Android (написано с Xamerin). У меня есть тестовый клиент, который работает с примером HelloWorld, указанным на веб-сайте servicestack. Он отлично работает без аутентификации и быстро возвращает значения.Базовая аутентификация с использованием стека службы
Теперь я пытаюсь привести аутентификацию в микс, начиная с очень простой аутентификации. У меня есть пользовательская авторизация и класс сеанса на сервере, который выглядит следующим образом:
public class userSession : AuthUserSession
{
public string clientCode { get; set; }
}
public class userAuth : CredentialsAuthProvider
{
public override bool TryAuthenticate(IServiceBase authService, string userName, string password)
{
if (userName == "user" || password == "1234") {
var session = (userSession)authService.GetSession(false);
session.clientCode = "peruse";
return true ;
} else {
return false;
}
}
}
и сконфигурирован с:
// auth feature and session feature
Plugins.Add(new AuthFeature(
() => new userSession(),
new[] { new userAuth() }
) { HtmlRedirect = null });
На стороне клиента, я зову новую JsonServerClient с:
JsonServiceClient client = new ServiceStack.ServiceClient.Web.JsonServiceClient("http://172.16.0.15/");
И событие для кнопки на Android интерфейс:
try
{
client.SetCredentials("user", "1234");
HelloResponse response = client.Get<HelloResponse>("/hello/" + toSum.Text);
txtResult.Text = response.Result ;
}
catch (Exception ex)
{
txtResult.Text = ex.Message;
}
Я продолжаю получать обратно 404 с сервера. При попытке доступа к нему с Curl от Linux:
curl -v http://user:[email protected]/hello/5
возвращает:
* Trying 172.16.0.15... connected
* Server auth using Basic with user 'user'
> GET /hello/5 HTTP/1.1
> Authorization: Basic dXNlcjoxMjM0
(Другой многословным материал ... потом ...)
HTTP/1.1 302 Found
Наряду с тем, что выглядит как ссылка на страницу входа в систему:
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/login.aspx?ReturnUrl=%2fhello%2f5">here</a></h2>
</body><html>
Я зашел в Web.config и удалил любую ссылку на эту страницу входа, но все же он пытается отправить меня туда.
Так что мой вопрос: правильно ли я отправляю учетные данные? Если да, то предоставленный код, похоже, обрабатывает их разумным образом?
Благодаря