ユーザーがブラウザのアドレス バーから 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 経由で提供されている限り) は、リダイレクトなしでログインをダイアログとしてアプリに統合することです。しかし、このアプローチは常に可能であるとは限りません (常に良いとは限りません)。