防止URI导航

abd*_*003 1 java permissions uri web-applications vaadin

我正在使用java框架Vaadin来创建一个Web应用程序.此应用程序具有不同的用户级别,当用户登录时,我根据其权限级别更改菜单.我遇到的问题是阻止用户通过输入URI来访问他们不认为的页面.例如,如果用户登录到应用程序并且只有查看第一页的权限,他仍然可以通过在浏览器搜索栏中键入第二页的URI来访问第二页.

我正在考虑阻止URI导航,但未能成功找到如何在Vaadin中完成.所以我的问题是如何防止Vaadin中的URI导航?如果你有一种阻止用户访问页面的不同方法,他们也不应该随意发布.

谢谢

Cha*_*ony 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
  }
});
Run Code Online (Sandbox Code Playgroud)

我的主项目不使用Navigator,因为它是在Vaadin 7之前启动的:我们开发了一个非常相似的框架,它使用URIFragmentListener来做同样的事情.