我正在使用 Java 框架 Vaadin 创建 Web 应用程序。这个应用程序有不同的用户级别,当用户登录时,我根据他们的权限级别更改菜单。我遇到的问题是阻止用户通过键入 URI 访问他们不应该访问的页面。例如,如果用户登录到应用程序并且只有查看第一页的权限,他仍然可以通过在浏览器搜索栏中输入第二页的 URI 来访问第二页。
我一直在研究防止 URI 导航,但未能成功找到 Vaadin 中的实现方式。所以我的问题是如何防止 Vaadin 中的 URI 导航?如果您有不同的方法来阻止用户访问他们不应该访问的页面,请随时发布。
谢谢
最佳答案
如果您使用的是 Vaadin 7 Navigator要进行 URI 导航,您可以注册为 ViewChangeListener:如果您在 beforeViewChange 方法中返回“false”,您可以停止导航到新 View (如果您愿意,可以显示错误消息)。
例如,
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
}
});
我的主要项目不使用 Navigator,因为它是在 Vaadin 7 之前启动的:我们开发了一个非常相似的框架,它使用 URIFragmentListener 来做同样的事情。
关于java - 防止 URI 导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18225480/