我有一个使用Spring的Vaadin 7应用程序,目前有一个ADMIN角色可以登录系统并查看所有视图。现在我需要添加另一个角色让我们说CO_ADMIN并允许具有此角色的用户查看部分视图。实现这一目标的最佳方法是什么?
由于
答案 0 :(得分: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);
}
如果要保护整个视图,可以在spring security config xml中启用@Secured
注释:
<global-method-security secured-annotations="enabled" />
启用@Secured
后,您可以这样注释您的观看次数:
@Secured("{ADMIN}")
这样,如果用户导航到视图,它将以403权限拒绝响应。您可以通过重定向到另一个视图或为应用程序定义错误处理程序来扩展导航器以处理此问题。