Обычная проверка подлинности с помощью стека служб

Я использую JsonServiceClient в своем приложении для Android (написано с Xamerin). У меня есть тестовый клиент, который работает с примером HelloWorld, указанным на веб-сайте servicestack. Он отлично работает без аутентификации и быстро возвращает значения.

Теперь я пытаюсь привести аутентификацию в микс, начиная с очень простой аутентификации. У меня есть собственный класс auth и session на сервере, который выглядит следующим образом:

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:1234@172.16.0.15/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 и удалил любую ссылку на эту страницу входа, но все же он пытается отправить меня туда.

Поэтому мой вопрос: правильно ли я отправляю учетные данные? Если да, то предоставленный код, похоже, обрабатывает их разумным образом?

благодаря

    Похоже, что у вас такая же проблема, как и у этого плаката: веб-служба ServiceStack с базовой аутентификацией и SetCredentials Ему удалось получить аутентификацию, работающую со следующим кодом:

     class Program { const string BaseUrl = "http://localhost:8088/api"; static void Main(string[] args) { var restClient = new JsonServiceClient(BaseUrl); restClient.SetCredentials("john", "test"); restClient.AlwaysSendBasicAuthHeader = true; HelloResponse response = restClient.Get<HelloResponse>("/hello/Leniel"); Console.WriteLine(response.Result); } } //Response DTO //Follows naming convention public class HelloResponse { public string Result { get; set; } } 

    Я рекомендую прочитать весь вопрос и ответ, так как он содержит подробные объяснения.

    Intereting Posts
    Android (ActionBarSherlock) Есть ли способ сохранить ту же самую высоту ActionBar как в портретной, так и в альбомной ориентации? Открытие Android Instagram с изображением вызывает сбой Как установить положение счетчика с кордорой Сборка Android-студии замедлилась после добавления новых библиотек? SDK Местоположение не найдено Gradle – DexException: несколько файлов dex определяют Как передавать текст в Google Voice SMS программно? Панель действий Android Tab Создание Android BLE (Bluetooth LE) довольно стабильно AlarmManager: как планировать ежедневную тревогу и обрабатывать изменения времени Кнопки Dialog с длинным текстом, не обертывающим / выжатым – материальная тема на android 5.0 lollipop В службах google play нет libproject (Rev. 30) в eclipse Juno «Тема уже началась» при возобновлении деятельности Проблемы с Android-темами, в которых реализовано самое простое: пользовательский цвет для каждой темы Невозможно включить Proguard в проект Android, содержащий jsch lib