1

Java フレームワーク Vaadin を使用して Web アプリケーションを作成しています。このアプリケーションにはさまざまなユーザー レベルがあり、ユーザーがログインすると、権限レベルに応じてメニューが変更されます。私が抱えている問題は、ユーザーが URI を入力して想定していないページにアクセスできないようにすることです。たとえば、ユーザーがアプリケーションにログインし、ページ 1 を表示する権限しかない場合でも、ブラウザーの検索バーにページ 2 への URI を入力することで、ページ 2 にアクセスできます。

URI ナビゲーションを防止することを検討していましたが、Vaadin でこれがどのように行われるかを見つけることができませんでした。私の質問は、Vaadin で URI ナビゲーションを防ぐ方法ですか? ユーザーがページにアクセスできないようにする別の方法がある場合は、それも投稿してください。

ありがとうございました

4

3 に答える 3

5

Vaadin 7 Navigatorを使用して URI ナビゲーションを実行している場合は、 ViewChangeListenerとして登録できます。beforeViewChange メソッドで「false」を返すと、新しいビューへのナビゲーションを停止できます (必要に応じてエラー メッセージを表示します)。 .

例えば、

navigator.addViewChangeListener(new ViewChangeListener() {
  @Override
  public boolean beforeViewChange(ViewChangeEvent event) {
    View newView = event.getNewView();
    String newViewName = event.getViewName();

    return canUserAccessView(newView, newViewName);  
  }

  @Override
  public void afterViewChange(ViewChangeEvent event) {
    //NO-OP
  }
});

私の主なプロジェクトは、Vaadin 7 より前に開始されたため、Navigator を使用しません。URIFragmentListener を使用して同じことを行う、非常によく似たフレームワークを開発しました。

于 2013-08-14T07:52:27.277 に答える
1

vaadin Navigatorを使用して実行できると思います。ビューをナビゲートできます。init(VaadinRequest request)そのため、が呼び出されるたびにログイン ビューに移動する必要があります。ボタンのクリックやその他のコンポーネント イベントで別のビューに移動する場合は、ナビゲーターを使用して、イベント リスナー内の関連するビューをナビゲートできます。

于 2013-08-14T07:56:35.510 に答える