vadin 7中基于角色的视图



我有一个与Spring一起工作的Vaadin 7应用程序,目前有一个ADMIN角色可以登录到系统并查看所有视图。现在我需要添加另一个角色,假设是CO_ADMIN,并允许具有该角色的用户查看部分视图。实现这一目标的最佳方式是什么?

谢谢

如果您使用spring安全性,您可以使用以下方法创建一个helper类:

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安全配置xml中启用@Secured注释:

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

启用@Secured后,您可以这样注释视图:

@Secured("{ADMIN}")

这样,如果用户导航到视图,它会返回403 permission denied。你可以通过重定向到另一个视图来扩展你的导航器来处理这个问题,或者为你的应用程序定义一个errorhandler。

相关内容

最新更新