如何使用Spring Security在Java代码中检查“hasRole”?

2022-08-31 08:23:42

如何在Java代码中检查用户权限或权限?例如 - 我想根据角色为用户显示或隐藏按钮。有这样的注释:

@PreAuthorize("hasRole('ROLE_USER')")

如何在Java代码中制作它?像这样:

if(somethingHere.hasRole("ROLE_MANAGER")) {
   layout.addComponent(new Button("Edit users"));
}

答案 1

您可以使用 HttpServletRequest 对象的 isUserInRole 方法。

像这样:

public String createForm(HttpSession session, HttpServletRequest request,  ModelMap   modelMap) {


    if (request.isUserInRole("ROLE_ADMIN")) {
        // code here
    }
}

答案 2

Spring Security 3.0 有这个 API

SecurityContextHolderAwareRequestWrapper.isUserInRole(String role)

在使用包装之前,您必须注入包装器。

SecurityContextHolderAwareRequestWrapper


推荐