gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 04:59:31 25 4
gpt4 key购买 nike

我已经在我的项目中添加了 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/

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