我正在努力学习Symfony的角色和安全性。我当前的security.yml文件如下所示:
role_hierarchy:
ROLE_USER: ROLE_DO_ALMOST_NOTHING
ROLE_EDITOR: [ ROLE_USER, ROLE_ALLOWED_TO_EDIT ]
ROLE_CONTRIBUTOR: [ ROLE_EDITOR, ROLE_ALLOWED_TO_CONTRIBUTE ]
ROLE_ADMIN: [ ROLE_CONTRIBUTOR ]
ROLE_SUPER_ADMIN: [ ROLE_ADMIN, ROLE_ALLOWED_TO_DO_ANY_THING ]
access_control:
- { path: ^/admin, roles: ROLE_USER }
- { path: ^/admin/editor, roles: ROLE_ADMIN }
- { path: ^/editor, roles: ROLE_EDITOR }
- { path: ^/contributor, roles: ROLE_CONTRIBUTOR }
- { path: ^/super, roles: ROLE_SUPER_ADMIN }
我正在为我的用户使用这个设置:
providers:
in_memory:
memory:
users:
person:
password: password!
roles: 'ROLE_USER'
admin:
password: password2
roles: 'ROLE_ADMIN'
这是我的问题。我一直缺少安全性的访问控制部分,但是,角色标记为ROLE\u admin的路径^/admin/editor
将允许用户person访问路由,即使该用户没有ROLE\u admin的角色。我想知道这是否是因为路由本身与^admin
路由由同一控制器共享?或者有人看到我的代码哪里出了问题,因为用户可以访问他们不应该访问的路径。
其他路线:
- { path: ^/editor, roles: ROLE_EDITOR }
- { path: ^/contributor, roles: ROLE_CONTRIBUTOR }
- { path: ^/super, roles: ROLE_SUPER_ADMIN }
按预期工作。
问题是,在匹配管理员/编辑器之前,您正在匹配
/admin
,而这只需要角色\u用户角色。如果您有:
- { path: ^/admin, roles: ROLE_USER }
匹配以
/admin
开头的所有内容,包括admin/Editor
。一旦Symfony找到合适的路线,它就不会检查第一条路线。所以您的^/admin/Editor/
检查永远不会到达。试试这个吧:
access_control:
- { path: ^/admin/editor, roles: ROLE_ADMIN }
- { path: ^/admin, roles: ROLE_USER }
- { path: ^/editor, roles: ROLE_EDITOR }
- { path: ^/contributor, roles: ROLE_CONTRIBUTOR }
- { path: ^/super, roles: ROLE_SUPER_ADMIN }
作为一个很好的经验法则,应该将最细粒度/特定的路线放在第一位。任何次级路线应始终位于主路线之前。
我无法在注释中使用方法。还有给出。我错过了什么?尽管工作正常。 我正在从数据库中为用户分配权限。
问题内容: 我想为具有以下角色之一(ROLE1或ROLE2)的用户定义某些页面的访问权限 我正在尝试在我的spring security xml文件中进行如下配置: 我尝试了各种方法,例如: 等等 但似乎没有任何效果。 我一直在例外 要么 应该如何配置? 谢谢 问题答案: 问题是我配置了自定义 ,但没有通过其中一名选民。 通过添加到bean中来解决。
在一个扩展WebSecurityConfigureAdapter的类中,我使用以下代码通过url为不同的角色添加安全性。 当我以用户角色登录时,我可以访问:/rest/setup/tax 当我使用管理员角色登录时,我可以访问 /rest/setup/tax http://localhost:8080/rest/setup/tax403(禁止) 我搜索只提供get for user角色和admin
我在试着做一件简单的事。 接下来是设置我的keycloak信息(realm,role,user)https://medium.com/@bcarunmail/securing-rest-api-using-keycloak-and-spring-oauth2-6ddf3a1efcc2 所以, 我基本上用一个客户机、一个具有特定角色“user”的用户来设置我的keycloak,并像这样配置它: 但当
我试图保护我的Spring启动应用程序(1.21)看起来像我的antMatcher("/报告**"). hasRole("报告")的一些URL模式被忽略。 e、 g.如果我浏览到localhost:9000/report/books之类的内容,我需要登录,它只适用于我的用户名密码组合,但我没有将角色报告设置为我的用户“user”。所以我希望我不被允许访问报告网站,但页面会显示出来。 我必须如何更改
我正在试图理解一些Spring Security代码。我也是Spring Security的新手,我想我在这里遗漏了一些基本的东西。 谢谢,雷。