2012-04-14 6 views
1

曖昧なタイトルは申し訳ありませんが、Sencha Touchモバイルアプリケーションを開発しており、RESTベースのWCF Webサービスを構築してデータを提供していますユーザーのログインを処理し、セッション全体をアプリ全体に生き生きとさせる最良の方法を提供します。Sencha Touch、JSONP、ASP.NET WCF REST、ユーザーセッション

私はWebサービスに接続するためにJSONPを使用する必要があるので、認証とセッション処理のオプションが制限されています。私は、アプリのローカルストレージにユーザーの資格情報を保存し、サービスを呼び出すたびにその資格情報を渡すことができますが、これは最善の解決策ではありません。いくつかは、Webサービス上のログインメソッドに資格情報を渡し、それ以降の呼び出しごとに送られるsessionidを返すことについて言及しています。しかし、私はWCFを使用して最初にセッションを作成する方法と、渡されたsessionidを使用してそれを生かし続ける方法についてはわかりません。

これを達成するための手法をお勧めする人はいますか?

答えて

1

jsonpは、外国のサービスからデータを取得するための素晴らしいトリックです。しかし、あなたがウェブサービスの所有者であるため、http応答にAccess-Control-Allow-Origin:*ヘッダーを追加して、ajaxモードに切り替えることができます。次に、標準の認証手順を使用できます。

+0

ありがとう@FidoX、Access Control-Allow-Originヘッダーを使用して、すべてのドメインに対してWebサービスを開くことができるとは思わなかった。これにより、通常のAjaxリクエストを使用してWebサービスにヘッダーを渡すことができるようになりました。私の質問は、ユーザーのセッションを永続させるためのベストプラクティスについてはまだ立っています。 – markvpc

0

あなたのウェブサービスが他の開発者によって消費されることを目指している場合は、クライアントアプリケーションで認証情報が設定されるので、認証キー(google-maps apiなど)を使用してウェブサービスにステートレスにします。

ユーザー/パスに対して認証する必要がある場合は、提案するソリューションはhttp認証と同じです。シナリオで利用できる場合は、自分自身を再実装する理由がない場合は、標準のhttp認証を使用します。

+0

apiキーを使用する際の問題は、クライアントがjavascriptでビルドされているため、秘密ではないことです。誰でもコードを見て、キーを見つけて自分のアプリケーションで使うことができます。このアプリでは、ユーザーがログインする必要がありますので、あまり問題はありません。残念ながら、基本的な認証はJSONを返すRESTベースのWCFサービスでは機能していないようです(私が見逃していない限り)ので、私自身の認証を実装する必要があります。おそらく、ユーザーの資格情報をチェックし、それ以降のすべての呼び出しに対して時間制限されたセッションIDを返す可能性があります。アドバイスありがとうございます。 – markvpc

+0

[OK]を次に、私はユーザーがあなたのニーズと正確に合格を合格と思う。基本認証にする必要はありません。FORM指向にすることができます(クッキーを使用)。あなたのフレームワークでうまくいかない場合は、なぜそれを調べるべきですか?私は決してWCFを使用しませんでしたが、RESTサービスでは認証を使用できないというのは本当に奇妙です。 – Israel