0

Java Play Framework 2.x で URL パラメータを非表示にすることは可能ですか? 私は似たような質問を見つけましたが、彼は URL のハッキングを防ぐためにそれらを非表示にしたいと考えていました。そのため、彼は URL を非表示にする以外の回答/解決策を得ました。

問題は、いくつかのアクション、jquery などに渡す必要がある ID を持つ「情報オブジェクト」がいくつかあるため、それを URL に含める必要があることです。しかし、私はどのユーザーにもIDを見せたくありません。

たとえば、私はこのconfを持っています:

GET     /deliverablegraph           controllers.Application.deliverable_graph(id:Long,contextId:Long)

../deliverablegraph?id=xxxx&contextId=yyyy のように表示されます

../deliverablegraph だけを表示したいのですが、id と contextId にアクセスする必要があります。

4

1 に答える 1

2

URL でパラメーターを非表示にすることについて同様の問題がありました。私の解決策が何らかの形で役立つことを願っています。唯一の違いは、JSON データを渡す必要があるため、非常に長い URL パラメーターを渡したくなかったことです。秘密情報を通過させたくない問題とは異なります。

そこで、非表示のフォーム フィールドに情報を配置することについて estmatic がコメントで述べたことを実行しました。

<form class='someDynamicForm' method='post' action='@routes.Application.function()'>
    <textarea name="jsonHolder" style="display: none">
        "Used javascript to insert the data I want in here"
    </textarea>
</form>

柔軟性を高めるために、button送信に a を使用する必要はありません。フォームを送信する準備ができたら、いつでも JavaScript コードを呼び出すことができますdocument.someDynamicForm.submit();

コントローラー側で、次のようにしてテキストエリアの情報を取得できます。

public static Result function() {
    DynamicForm dynamicForm = DynamicForm.form().bindFromRequest();
    String jsonData = dynamicForm.get("jsonHolder");
    return;
}

そして、ルートファイルで次のことを確認してください。

POST       /json           controllers.Application.function()

ここでの欠点は、ID を秘密にしたいということです。「ハッカー」がしなければならないことは、右クリック -> ページのソースを表示することだけで、隠しテキストフィールドの情報を見ることができます。

Web セッション全体で情報を渡すために私が行った別の解決策は、Play の組み込みSession http://www.playframework.com/documentation/2.1.x/JavaSessionFlashを使用することです。

そのようなものを使用することを検討しましたか?ユーザーの ID を頻繁に使用するように思われるため、ID 情報をセッション (最終的には Cookie で公開されます) に保存することを検討する必要があるかもしれません。

于 2013-08-15T17:30:54.877 に答える