java - HTTP 状态 403 - 访问被拒绝 Spring 安全

标签 java spring spring-mvc spring-security

我已经在我的项目中添加了 Spring security 并将其配置为

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="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.xsd
                    http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.0.xsd">

     <http>
        <intercept-url pattern="/add-job**" access="hasRole('USER')" />
        <form-login  
            login-page="/login" 
            default-target-url="/"
            always-use-default-target="true"/>
        <logout />
    </http>

    <authentication-manager>
        <authentication-provider>
            <user-service>
            <user name="admin" password="admin" authorities="ROLE_ADMIN" />
            </user-service>
        </authentication-provider>
    </authentication-manager>

</beans:beans>

通过上面的配置,当我转到 /add-job 时,它会将我重定向到 \login 并在登录成功后我转到 /add-job 它显示错误 Access Denied Message

我有什么错误吗?

最佳答案

Spring Security 拒绝访问是正确的:

  • 您在身份验证管理器中只定义一个登录名:admin/admin 具有一个权限 ROLE_ADMIN
  • 您将对 /add-job** 的访问权限限制为具有 ROLE_USER 权限的用户

没有用户可以拥有 ROLE_USER 权限,因此 spring security 将始终拒绝访问。

您应该使用 ROLE_ADMINROLE_USER(或您喜欢的任何其他 ROLE_xxx),但在保护资源时使用相同的方式(access="hasRole(xxx)") 并授予用户 (authorities="ROLE_xxx")

无论如何,最简单的修复方法是为用户 admin 添加所需的权限:

        <user name="admin" password="admin" authorities="ROLE_ADMIN,ROLE_USER" />

关于java - HTTP 状态 403 - 访问被拒绝 Spring 安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32547969/

相关文章:

java - jsonchema2pojo : How the minLength, maxLength 边界应用于生成的 Java Pojo 类?

java - 如何使用Spring管理与多个数据库的连接

spring - 无法将查询字符串参数映射到我的JavaBean(使用Spring 4和Datatables)

java - 背景颜色和大小相等的 jradiobuttons

java - 使用 Apache POI 更改行的样式

java - 在docx4j-Java中设置A5页面大小

web-services - Spring MVC如何成为REST框架?

java - 将 Spring MVC 异常作为验证错误处理

java - Spring 中的角色与 ACL

java - Spring Security 在每个页面显示数据