当前位置: 首页 > 知识库问答 >
问题:

Spring security hasRole()给出错误403-访问被拒绝

祁聪
2023-03-14

我正在尝试查看一个只有管理员才能查看的特定页面,但每次我提出请求时都会出现错误。它似乎与我的security-context文件中的hasRole()在一起。

当我请求查看admin jsp页面时,错误只显示HTTP状态403-访问被拒绝

<security:http use-expressions="true">
    <security:intercept-url pattern="/admin" access="hasAnyRole('admin')" />
    <security:form-login login-page="/login"
        authentication-failure-url="/login?error=true" />
    <security:logout logout-success-url="/loogedout" />
    <security:intercept-url pattern="/createoffer" access="isAuthenticated()" />
    <security:intercept-url pattern="/docreate" access="isAuthenticated()" />
    <security:intercept-url pattern="/offercreated" access="isAuthenticated()" />
    <security:intercept-url pattern="/" access="permitAll" />
    <security:intercept-url pattern="/loggedout" access="permitAll" />
    <security:intercept-url pattern="/newaccount" access="permitAll" />
    <security:intercept-url pattern="/createaccount" access="permitAll" />
    <security:intercept-url pattern="/accountcreated" access="permitAll" />
    <security:intercept-url pattern="/static/**" access="permitAll" />
    <security:intercept-url pattern="/login" access="permitAll" />
    <security:intercept-url pattern="/offers" access="permitAll" />
    <security:intercept-url pattern="/**" access="denyAll" />
</security:http>

我数据库中的两个表是一个用户(用户名,电子邮件,启用,密码)和一个当局(用户名,当局)。

谁能建议一下我的错误是什么或者如何修复它?

共有1个答案

尉迟鸿熙
2023-03-14

默认情况下,spring添加了role_prefix,因此将hasanyrole('admin')更改为hasanyrole('role_admin')应该可以修复错误,除非您有自定义实现。

参考:

http://docs.spring.io/spring-security/site/docs/current-snapshot/apidocs/org/springframework/security/access/vote/rolevoter.html

https://docs.spring.io/spring-security/site/docs/3.2.3.release/apidocs/org/springframework/security/core/userdetails/jdbc/jdbcdaoimpl.html#setroleprefix(java.lang.string)

 类似资料:
  • 我在负载平衡器后面有web服务器,系统成功地将我重定向到OKTA登录页面,当我输入凭据时,并在OKTA服务器执行回调操作时单击登录按钮,使用 我得到一个错误: 403-禁止:拒绝访问。您没有使用提供的凭据查看此目录或页的权限。 我在Startup.cs文件中使用下面的代码,我在Blazor服务器上的应用程序

  • 问题内容: 在某种程度上,当我尝试通过命令行访问MySQL时,已经设法解决了该错误: 我尝试使用此HowTo重置密码,但没有任何运气。 我已经卸载了mysql completley并重新安装了,但是仍然需要输入密码。我不知道为什么会这样! 有人可以帮我获得默认安装的MySQL吗? 环境 Fedora Core 10,完全根访问权限,安装了Apache和PHP 感谢您的任何帮助!! 编辑 对于所有想

  • 我最近才更新到新版本的forge,没有改变我的设置,当我去构建我的应用程序时,我得到了一个错误,说它找不到文件…

  • 这个问题已经问过好几次了,但没有一个解决办法对我有效。我以管理员身份运行DOS命令窗口,但当运行keytool命令安装证书时,我得到了上面的错误: 我在Windows10上使用JDK 1.8.0_191。为什么拒绝对管理员的访问?

  • 在升级到Spring Security 4.1.2和Spring 4.3.2时,我得到了403拒绝访问错误代码 我正在使用Spring Security AuthenticationProvider类进行身份类中的authenticate(Authentication Authentication)方法成功执行,并返回新的UsernamePasswordAuthenticationToken(us