2014-07-20 39 views
0

我有一个Vaadin 7应用程序与Spring一起工作,目前有一个ADMIN角色可以登录到系统并查看所有视图。现在我需要添加另一个角色,比如CO_ADMIN,并允许具有此角色的用户查看部分视图。达到此目的的最佳方法是什么?基于角色的视图在VAADIN 7

感谢

回答

0

如果你使用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); 
} 

如果要保护整个视图,可以在弹簧安全配置xml中启用@Secured注释:

<global-method-security secured-annotations="enabled" /> 

随着@Secured使您可以标注您的看法是这样的:如果

@Secured("{ADMIN}") 

通过这种方式,用户导航到视图,它否认403允许响应。您可以扩展您的导航器,通过重定向到另一个视图或为应用程序定义错误处理程序来处理此问题。