gpt4 book ai didi

java - 实现授权 Controller

转载 作者:行者123 更新时间:2023-12-02 08:10:18 28 4
gpt4 key购买 nike

我在我的应用程序中使用 Spring 和 Spring Security 3。我所有的客户端都是静态 HTML 文件。我有一个导航栏,其中包含以下按钮:

  • 列表
  • 编辑
  • 删除
  • 更新

当用户单击其中任何一个时,另一个页面会在底部加载。用户在我的应用程序中具有角色。有些用户没有编辑和删除权限,而其他用户则有。该按钮应该对具有授权的用户可见。如果用户没有正确的编辑权限,他/她就不能看到编辑按钮。我在 HTML 文件中定义了按钮:navigation.html。我发现:会有很多 navigation.html 文件。其中之一包括所有按钮(用于管理),其中之一仅包括列表按钮。如果用户请求 navigation.html 我想发送正确的。所以我才能拥有这样的能力:

<logout logout-url="/j_spring_security_logout" logout-success-url="/login.html"/>

类似于该用户将从 URL 请求该文件(如/navigation)。将有一个 Controller 来处理它,因此将返回任何导航文件。

这个设计听起来正确吗?如果是这样,我该如何实现?欢迎任何其他简单的解决方案,我是 Spring 和 Spring Security 的新手。

最佳答案

对于一般的 Spring Security 使用,您不需要编写自己的代码来启用授权。我通常在 XML 中配置 Spring Security,以根据角色在总体级别上控制对各种资源的访问。然后,我注释 Controller 和/或处理程序方法以更精确地限制。

示例:

<?xml version="1.0" encoding="UTF-8"?>

<beans:beans
xmlns:security="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">

<security:global-method-security secured-annotations="enabled">
</security:global-method-security>

<security:http auto-config="true" disable-url-rewriting="true">
<security:intercept-url pattern="/*.do" access="ROLE_USER" />
<security:intercept-url pattern="/index.jsp" access="ROLE_USER" />
<security:intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<security:intercept-url pattern="/login.jsp" filters="none" />
<security:form-login login-page="/login.jsp" />
<security:logout />
</security:http>

<security:authentication-manager>
<security:authentication-provider>
<security:password-encoder hash="md5" />
<security:jdbc-user-service data-source-ref="my-ds"/>
</security:authentication-provider>
</security:authentication-manager>

</beans:beans>

然后在 Controller 中:

@Secured({"ROLE_SPECIAL_USER"})
@RequestMapping("/somespecial.do")

在 JSP 中:

<%@ taglib prefix="authz" uri="http://www.springframework.org/security/tags" %>
<authz:authorize ifAnyGranted="ROLE_SPECIAL_USER">
...some special JSP code...
</authz:authorize>

关于java - 实现授权 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7569647/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com