2016-11-19 12 views
2

私はServiceStackのtypescript JsonServiceClientを使用しようとしていますが、認証を必要としないルートではうまく動作しますが、認証されたルートでの使用方法に関するドキュメントは見つかりません。ServiceStacks JsonServiceClientの資格情報の形式は何ですか?

私は基本認証を使用していますが、手動で認証ヘッダーを設定すると動作しますが、JsonServiceClientには資格情報の文字列が含まれています。

基本認証(またはその他の認証プロバイダ)を使用するには、どのような形式の認証情報を使用する必要がありますか。また、すべての要求に対して基本認証ヘッダーを送信する方法を教えてください。

私は、洞窟人のように手動で認証ヘッダーを設定する必要はないはずです。

答えて

2

あなたが登録した場合は、通常のWebサービス要求を認証することができCredentialsAuthProvider、例えば:

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

成功した場合(つまりスローしません)ServiceClientはそれを加えることができServiceStack's Session Cookiesが取り込まれます認証された要求。

あなたはHTTP基本認証は、BasicAuthProvider、あなたはすなわち、各要求とHTTP基本認証の資格情報を送信するために内蔵されたユーザー名/パスワードのプロパティを使用することができ、登録、すなわちを有効にしている場合:

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

いくつかの他のオプションをサービスクライアントで認証する場合はApiKeyAuthProviderまたはspecifying a JWT Tokenを登録した場合はJwtAuthProviderを使用してください。

+0

JsonServiceClientのtypescript定義が不完全である可能性があります。 typecript定義ファイルでエクスポートされたJsonServiceClientクラスに定義されているUserNameプロパティまたはPasswordプロパティはありません。 – on3al

+1

@ on3al ok申し訳ありませんが、あなたがTypeScriptを意味していることが分かります。TypeScriptの 'JsonServiceClient'にUserName/Passwordフィールドはありません。次のバージョンで追加します。あなたは 'Authenticate' Request 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で公開されていますが、[このPRをマージするための入力を待つ必要があります]入力の前に 'userName'、' password'と代替の 'setCredentials()' APIを含む最新バージョンをインストールします。 – mythz