【问题标题】:intercept url doesn't work with spring security angular拦截网址不适用于弹簧安全角度
【发布时间】:2023-03-16 15:35:01
【问题描述】:

我正在尝试管理用户身份验证,我的配置是:

<security:intercept-url pattern="/**" access="isAuthenticated() and hasRole('ROLE_ADMIN')" />
                  <security:intercept-url pattern="/public/**" access="isAuthenticated() and hasRole('ROLE_USER')" />

我的问题是只有管理员可以登录,但其他人我收到此消息“Etat HTTP 403 - 访问被拒绝”此问题的任何解决方案?

【问题讨论】:

  • 指定安全规则的顺序是它们被查阅的顺序...因此/**应该总是在最后而不是第一个。
  • 感谢您的回答,我更改了订单,但用户无法访问“公共”文件夹下的视图
  • 他们登录了吗?你目前已经保护了一切,你的规则也有点多余,hasRole 暗示某人是authenticated 否则他没有规则。
  • 他们还没有登录,我正在尝试过滤用户的重定向

标签: angularjs spring spring-security


【解决方案1】:

这里的问题是第一条规则限制太多,并且在所有 url 中 Spring 安全检查用户是否具有 ROLE_ADMIN。现在我不知道您的安全要求是什么,但考虑到在您的情况下停止评估的第一条规则首先停止过滤您的请求并拒绝其他用户的呼叫。

你可以这样试试:

<security:intercept-url pattern="/public/**" access="hasRole('ROLE_USER')" />
<security:intercept-url pattern="/**" access="hasRole('ROLE_ADMIN')" />

在这种情况下,您说公共 url 具有用户具有 USER 角色的安全要求,如果此要求不正确,则评估是否是 ADMIN,第二条规则。

如果你注意到我删除了 isAuthenticated(),在这种情况下我只检查登录用户的角色。

希望对你有帮助

【讨论】:

  • 我更改了我的代码但它不起作用,我认为它是由 angularjs 引起的,因为 angularjs 使用 '#' 但我不知道如何解决它
  • 我将 Angular 与 spring Security 一起使用,对我来说一切正常。
  • 所以请告诉我“public”应该是我的视图文件夹还是应该是角度服务中使用的路径
  • public 应该在路径中使用,但我在互联网上搜索,我认为你可以阅读这个 https://spring.io/guides/tutorials/spring-security-and-angular-js/ .我不知道你的应用程序的所有细节,但我使用了 Thymeleaf 和 angular 我的开源项目,如果你愿意,可以阅读 ispiration 的代码。 github.com/mrFlick72/socialDocumentLibrary
猜你喜欢
  • 2012-07-27
  • 2017-05-08
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
  • 2015-12-20
  • 2023-03-09
  • 2012-06-08
相关资源
最近更新 更多