2

作成したアプリケーション内のレコードへのリンクを電子メールで送信できるようにするには、GWT プレースを使用する必要があります。私たちのアプリケーションはログイン資格情報を必要とするため、2 つのケースを処理する必要があります。

1) レコードへのリンクを受け取り、すでにアプリケーションにログインしている場合。この場合、リンクをクリックするとレコードに直接移動します。

2) レコードへのリンクを受け取りましたが、まだアプリケーションにログインしていません。この場合、リンクをクリックすると最初にログイン画面が表示され、ログイン後にレコードに直接移動します。

他の誰かがこのようなことをしましたか?

ベスト、マイトリ

4

2 に答える 2

1

私のアドバイスは、HTML5 History API(pushStateonpopstate)を組み合わせてリダイレクトに沿った場所を維持し、この手法を使用してそれをと統合しPlaceHistoryHandler、コンテナのセキュリティを使用してログイン画面にリダイレクトすることです(私は単にでを使用security-constraintしますweb.xml)。

そうすれば、アプリ内を移動するときに、URLのハッシュ部分を使用しない場所へのパーマリンクがあります(サーバーに送信されないため、サーバーがログインページにリダイレクトすると失われます)。 このようなパーマリンクがあり、ログインしていない場合、サーブレットコンテナはログインページにリダイレクトし、ログインするとURLに戻ります。そのURLはハッシュ部分を使用して場所をエンコードしなかったため、そのURLはサーバーに送信されたため、リダイレクト間で失われることはありません。

HTML5 History APIをサポートしていないブラウザーをサポートする必要がある場合は、パーマリンクを提供するアプリのボタンをフォールバックとして使用できます。次に、そのパーマリンクから、ハッシュ部分を使用して場所をエンコードするパーマリンク、つまりで処理できるパーマリンクにリダイレクトする必要がありDefaultHistorianます。
これは、新しいGoogleグループ(GWTで作成)が使用しているアプローチです。

于 2012-05-08T16:07:31.387 に答える
0

ユーザーがブラウザのアドレス バーから URL をコピーし、それを電子メールで送信できるようにしたいと考えています。リンクは次のようになります

www.example.org/index.html#sometoken

このようなリンクにより、受信者は GWT アプリケーションに移動し、GWT アプリケーションが何をすべきかを決定します。ユーザーがまったく許可されていなくても、通常は完全な GWT アプリを提供するだけで問題ないと思います(GWT は難読化された JavaScript にコンパイルできます) [*]。通常、アプリ自体には機密データは含まれていません。そのデータは AJAX 経由で読み込まれます。

サーバーがユーザーがログインしていないことを検出し、適切な例外を返すことができるのは、AJAX 呼び出しです。例外を受信すると、クライアントはログイン ページ ( Window.Location.replace(...)) に転送でき、トークンを GET パラメータに再エンコードするだけです。

www.example.org/login.html?historytoken=sometoken

ログインに成功すると、サーバーは再び「/index.html#sometoken」にリダイレクトします ( resp.sendRedirect(...))。取得パラメータ「historytoken」を読み取ることができるため、URLフラグメントを簡単に構築できます。

[*] 難読化されたコードを詮索好きな目から保護する必要がある場合は、"index.html" をサーブレットにマップして、短い JavaScript アプリ (ログイン ページに転送することだけが仕事) を送信することができます。 GWT アプリ (ユーザーがログインしていない場合)。

代替ソリューション

別の解決策 (アプリ全体が HTTPS 経由で提供されている限り) は、リダイレクトなしでログインをダイアログとしてアプリに統合することです。しかし、このアプローチは常に可能であるとは限りません (常に良いとは限りません)。

于 2012-05-08T23:11:23.100 に答える