我在我的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页面以查看删除按钮.
有没有更简单的方法来做到这一点!?
我想您对应用程序中各处的“编辑”按钮拥有相同的权利。在这种情况下,您可以将授权代码提取到一些自定义标记中(我推荐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)
您也可以为“添加新”和“删除”按钮准备和使用标签。希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
579 次 |
| 最近记录: |