GWT アプリで GWTP を使用しており、次のアーキテクチャを使用しています。
LoginPresenter (Presenter)
DashboardPresenter (TabContainerPresenter)
TabbedPresenter1 (Presenter)
TabbedPresenter2 (Presenter)
TabbedPresenter3 (Presenter)
アプリを初めて起動すると、DashboardPresenter で onBind メソッドと addTab メソッドが呼び出され、タブに移動すると、そのプレゼンターで onbind メソッドが呼び出されます。
PlaceRequest を作成し、PlaceManager 経由で (ログアウト ボタンを押して) LoginPresenter に戻ると、ログイン プレゼンターに戻ります。
問題は、再度ログインすると、すべての onBind メソッドがまだメモリ内にあるために呼び出されないことです。onReset と onReveal は正しく呼び出されますが、各プレゼンターがリセットされ、ログインごとに onBind が呼び出されることを強く望みます。
ログイン イベントでどのタブをユーザーに表示するかを決定し、ユーザーがそれらのタブを表示するための十分な権限を持っていない場合は、DashboardPresenter の addTab メソッドでタブを制限します。ただし、現時点では、ユーザーが最初にログインしたときにタブが設定されますが、次回は設定されません。これは、権限の低いユーザーが管理者ユーザーの後にログインすると、管理者と同じタブが表示されることを意味します。良くない!
これにどのように対処すればよいですか?ユーザーがログアウトする(ログインページに移動する)ときに、すべてのプレゼンターまたはセッションを「リセット」したいと思います。以前と同じバインドされたオブジェクトを返さないように、「リセット」する必要があるのは Ginjector ですか?
明確にするために、機密データにアクセスする権限のないユーザーを禁止するサーバー側のセキュリティがあります。しかし、ユーザーがログインすると、gwt アプリはユーザーがアクセスできる機能のリストを受け取ります。これは、ユーザーの権限に合わせて UI をカスタマイズするために使用されます。(たとえば、ユーザーの権限に基づいて表示されるタブをカスタマイズします)。