Java VAADIN 7中基于角色的视图

Java VAADIN 7中基于角色的视图,java,spring-security,vaadin7,Java,Spring Security,Vaadin7,我有一个使用Spring的Vaadin 7应用程序,目前有一个管理员角色可以登录到系统并查看所有视图。现在我需要添加另一个角色,比如CO_ADMIN,并允许具有此角色的用户查看部分视图。实现这一目标的最佳方式是什么 谢谢如果您使用spring security,您可以使用以下方法创建帮助器类: public static boolean hasRole(String role) { return getPrincipal().getAuthorities().contains(new S

我有一个使用Spring的Vaadin 7应用程序,目前有一个管理员角色可以登录到系统并查看所有视图。现在我需要添加另一个角色,比如CO_ADMIN,并允许具有此角色的用户查看部分视图。实现这一目标的最佳方式是什么


谢谢

如果您使用spring security,您可以使用以下方法创建帮助器类:

public static boolean hasRole(String role) {
    return getPrincipal().getAuthorities().contains(new SimpleGrantedAuthority(role));
}

public static UserDetails getPrincipal() {
    return (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
}
然后,您可以通过编程定义视图的每个部分需要哪些角色:

Panel panel = new Panel("securedpanel");
if (SecurityUtils.hasRole("ADMIN")) {
    //panel.setVisible(false);
    panel.setEnabled(false);
}
如果要保护整个视图,可以在spring security config xml中启用@Secured注释:

 <global-method-security secured-annotations="enabled" />
这样,如果用户导航到视图,它将以403权限被拒绝作为响应。您可以通过重定向到另一个视图或为应用程序定义errorhandler来扩展导航器以处理此问题

@Secured("{ADMIN}")