根据用户角色和权限显示不同的网页和元素

Show different web pages and elements depending on the user Role and Privilege

我有一个 Spring MVC 网络应用程序,使用 Thymeleaf 作为模板引擎,Spring 安全管理登录阶段。

我的用户可以使用不同的角色登录(ROLE_ADMIN、ROLE_USER 和 ROLE_GUEST)。 此外,具有角色 ROLE_USER 的用户是一个或多个工作组(一组用户)的一部分,并且在工作组 he/she 中可以使用不同的权限:WG_ADMIN、WG_USER、 WG_GUEST。 每个权限都允许 WG 用户对 WG 资源执行某些操作。

现在我有一组视图,想根据用户的角色和 WG 权限管理对页面和页面元素的授权。

使用 Spring MVC 和 Thymeleaf 完成工作的规范方法是什么?

谢谢

您可以使用以下内容:

<div sec:authorize="hasRole('ROLE_ADMIN')">
    Hi, <span sec:authentication="principal.name"></span> 
</div>

您需要@PreAuthorize 和@Secured 的组合。我会告诉你有什么区别。你的控制器方法应该用@PreAuthorize 注释。有了这个,如果用户没有角色,用户将根据您的安全设置重定向。

对于@Secured,如果用户没有角色,则不会执行该方法。所以你应该在服务层使用@Secured。

你需要这样的东西。

@PreAuthorize(hasRole('ROLE_ADMIN'||'ROLE_USER'))
@RequesMapping(value="/doblahblah")
public String doBlahBlahh(){
    methodOnlyAdminCanExecute();
    methodOnlyUserCanExecute();
}

@PreAuthorize(hasRole('ROLE_USER'))
@RequesMapping(value="/douserstuff")
public String douserstuff(){
    methodOnlyAdminCanExecute();
    methodOnlyUserCanExecute();
}

服务层:

public class adminCode{

@Secured("ROLE_ADMIN")
public void doAdminStuff(){
//dostuff
}

}

现在,即使在第二个控制器方法中调用此方法,它也不会执行,@Secured 注释将被处理,并且该方法不会执行。

这是我从你的问题中了解到的。如果这不是您要找的,我将删除我的答案。