2016-11-19 2 views
2

Я пытаюсь использовать машинописный JScriptServiceClient ServiceStack, и он отлично работает с маршрутами, которые не требуют аутентификации, но я не могу найти документацию о том, как использовать его с аутентифицированными маршрутами.Каков формат учетных данных в ServiceStacks JsonServiceClient?

Я использую базовую аутентификацию, и я могу заставить ее работать, если вручную установить заголовок авторизации, но я вижу, что у JsonServiceClient есть свойство credentials, которое является строкой.

Какой формат должен содержать эта строка учетных данных для использования базового auth (или любых других поставщиков auth) и как обеспечить, чтобы основной заголовок auth отправляется по каждому запросу?

Я знаю, что мне не нужно было устанавливать заголовок авторизации вручную, как пещерный человек.

ответ

2

Если вы зарегистрировал CredentialsAuthProvider вы можете проверить подлинность с нормальным запрос веб-службы, например:

var client = new JsonServiceClient(baseUrl); 
client.Post(new Authenticate { 
    provider = "credentials", 
    UserName = userName, 
    Password = password, 
    RememberMe = true, 
}); 

В случае успеха (т.е. не бросает) ServiceClient будет заполняться ServiceStack's Session Cookies позволяет это сделать аутентифицированные запросы.

Если включена функция HTTP Basic Auth, т.е. зарегистрировал BasicAuthProvider, то вы можете использовать встроенные свойства Имя пользователя/пароль для отправки учетных HTTP Basic Auth с каждым запросом, то есть:

var client = new JsonServiceClient(baseUrl) { 
    UserName = userName, 
    Password = password 
}; 

Некоторые другие варианты для аутентификации с Сервисом Клиент должен specify an API Key, если вы зарегистрировали ApiKeyAuthProvider или specifying a JWT Token, если используете JwtAuthProvider.

+0

Похоже, что определения машинописного текста для JsonServiceClient могут быть неполными. Нет свойств UserName или Password, определенных в классе JsonServiceClient, экспортированных в файл определения typecript. – on3al

+1

@ on3al ОК извините, просто посмотрите, что вы имели в виду TypeScript - нет полей UserName/Password в «JsonServiceClient» для TypeScript. Я посмотрю, как добавить его в следующую версию. Вы можете отправить запрос 'Authenticate' DTO или использовать' client.headers' для отправки [Authorization Basic $ {base64 (user: pass)}] (https://en.wikipedia.org/wiki/Basic_access_authentication) – mythz

+1

@ on3al FYI Я добавил поддержку [HTTP Basic Auth] (https://github.com/ServiceStack/servicestack-client/commit/3ed0e60226488e06fea7cbde5dcd9c776dc1b9b6), который теперь опубликован на npm, но все же нужно дождаться [typings, чтобы объединить этот PR] (https://github.com/typings/registry/pull/913), прежде чем типизация установит последнюю версию, содержащую 'userName',' password' и альтернативные 'setCredentials()' API. – mythz

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