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

Java 根据用户角色和权限显示不同的网页和元素,java,spring,spring-mvc,spring-security,thymeleaf,Java,Spring,Spring Mvc,Spring Security,Thymeleaf,我有一个springmvcweb应用程序,其中Thymeleaf作为模板引擎,springsecurity用于管理登录阶段 我的用户可以使用不同的角色(角色\管理员、角色\用户和角色\来宾)登录。 此外,角色为Role_user的用户是一个或多个工作组(一组用户)的一部分,在工作组中,他/她可以使用不同的权限行事:WG_ADMIN、WG_user、WG_GUEST。 每个特权都允许工作组用户在工作组资源上执行一些操作 现在我有了一组视图,并希望根据用户的角色和WG权限管理对页面和页面元素的授权

我有一个springmvcweb应用程序,其中Thymeleaf作为模板引擎,springsecurity用于管理登录阶段

我的用户可以使用不同的角色(角色\管理员、角色\用户和角色\来宾)登录。 此外,角色为Role_user的用户是一个或多个工作组(一组用户)的一部分,在工作组中,他/她可以使用不同的权限行事:WG_ADMIN、WG_user、WG_GUEST。 每个特权都允许工作组用户在工作组资源上执行一些操作

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

用SpringMVC和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注释将被处理,并且该方法不会执行


这就是我从你的问题中理解的。如果这不是你想要的,我会删除我的答案

那么,我想这是解决办法的一部分。至于一些元素的GUI可视化,尽管其他元素取决于用户的角色和权限,我是否应该使用@GingerHead解决方案,使用Thymeleaf的sec:authorize和sec:authentication属性?您可以,但有人可以从Greasemonkeys更改html、JS代码,那么我如何防止用户看到管理菜单项,例如此外,此链接中描述的配置是否能帮助我?你不能,除非你涉及后端。从后端检索是唯一的选择。检查角色,然后适当地添加菜单项的model.attributes。这样,即使有人操纵前端的内容,也没有用。关于链接,它只是用于初始配置,其他什么都没有。当然,您可以说,who可以访问哪些请求映射,但与atPreAuthorized和atSecured相比,灵活性并不大。