我的用户访问方式是否正确?

J88*_*888 5 spring-security

我在我的jsp页面上应用spring security,我需要向具有不同角色的用户显示页面的不同部分,所有角色如下.

所有经过身份验证的用户>>编辑和添加新

管理>删除和编辑并添加新

匿名>添加新

<sec:authorize
        access="isAuthenticated()">
          Code of add new and edit buttons
 </sec:authorize>

 <sec:authorize 
         access="hasAnyRole('ADMIN')">
   Code to add new, edit and delete buttons
 </sec:authorize>

  <sec:authorize 
         access="isAnonymous()">
     Code to add new
  </sec:authorize>
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更简单的方法,在这种情况下,如果我想修改特定角色的访问权限,我必须更改其在security.xml文件中的访问规则以及我已设置角色访问权限的每个页面.

例如,假设我想要Admin角色无法访问删除按钮,那么我必须更改security.xml的代码以及admin角色经过身份验证的所有JSP页面以查看删除按钮.

有没有更简单的方法来做到这一点!?

Mak*_*das 1

我想您对应用程序中各处的“编辑”按钮拥有相同的权利。在这种情况下,您可以将授权代码提取到一些自定义标记中(我推荐JSP 标记文件)。对于每个编辑按钮,您将使用自定义标签:

<customtags:hasEditPermission>
     Edit button code goes here
<customtags:hasEditPermission>
Run Code Online (Sandbox Code Playgroud)

所有权限将在您的以下位置声明一次hasEditPermission.tag

<%@tag description="Edit permission tag" pageEncoding="UTF-8"%>
<sec:authorize  access="hasAnyRole('ADMIN')">
    <jsp:doBody/>
</sec:authorize>
Run Code Online (Sandbox Code Playgroud)

因此,在新的 POWER_USER 角色的情况下,您只需要修改一个文件:

<%@tag description="Edit permission tag" pageEncoding="UTF-8"%>
<sec:authorize  access="hasAnyRole('ADMIN', 'POWER_USER')">
    <jsp:doBody/>
</sec:authorize>
Run Code Online (Sandbox Code Playgroud)

您也可以为“添加新”和“删除”按钮准备和使用标签。希望这可以帮助。