0

allauthを使用してDjangoアプリを構築しています。

認証が必要なページがあり、そこにJavaアプレットを配置します。このアプレットは、Jsonオブジェクトを返す(同じdjangoプロジェクトの)他のページへのGETリクエストを実行します。

アプレットは、JSObjectを使用して、親WebページからCSRFトークンを取得します。

問題は、すべてのページを認証制御で設定したいのですが、アプレットの親WebページからセッションID Cookieを取得できないため、データを取得(または保存)するためにGET(およびPOST)を実行できないことです。

これを入手するのは簡単な方法かもしれませんが、私は初心者で、何も見つかりませんでした。

何か必要かどうか自由に聞いてください。

ありがとうございました。

編集:

階下に書いたことがありますが、sessionid cookieがHTTPOnlyとしてマークされていることがわかりました。そのため、問題は、アプレットがPOSTおよびGET要求を実行できるようにする最も安全な方法です。たとえば、ページにJSメソッドを作成して、データを取得してアプレットに渡すことができますか?たぶん私がPOSTを行うことができるのと同じ方法ですか?

編集:

ページからjquery呼び出しを使用して、データを正常に取得しました。ここでの問題は、コードがInvocationTargetExceptionをスローすることです。問題の位置はわかりましたが、解決方法がわかりません。

Jqueryコードは次のとおりです。

  function getFloor() {

        $.get(
              "{% url ... %}",
              function(data) {
                    var output = JSON.stringify(data);
                    document.mapGenerator.setFloor(output)
              }
        );}

そして、ここにアプレットの2つの機能があります。**の部分が問題の原因です。

  public void setFloor(String input) {
    Floor[] f = Floor.parse(input);
}

  public static Floor[] parse(String input) {

    **Gson gson = new Gson();**

    Floor[] floors = gson.fromJson(input, Floor[].class);

    return floors;
}

そして、ここに私のサーバーに出力されるログがあります。ここでは、アプレットが(アプレットからではなく)サーバーからGsonのライブラリをロードしようとしていることがわかります。

  "GET /buildings/generate/com/google/gson/Gson.class HTTP/1.1" 404 4126

Somebadyは私を助けることができますか?

4

1 に答える 1

0

アプレットで次のようなことができます。

String cookies = JSObject.getWindow(this).eval("document.cookie").toString();

これにより、そのページのすべての Cookie がセミコロンで区切られて表示されます。

于 2012-11-23T03:25:32.413 に答える