gpt4 book ai didi

Spring Security 'Roles' 和 'Privileges' 和 Thymeleaf 'hasRole' 和 'hasAuthority'

转载 作者:行者123 更新时间:2023-12-04 18:57:00 27 4
gpt4 key购买 nike

使用 this方法,我在前端(Thymeleaf)方面遇到了一些麻烦。一个例子:

  • 用户具有角色 admin (角色被分配了两个权限 readwrite )
  • 用户具有角色 user (该角色仅被分配了 read 权限)

  • 在前端,我将确保不同的 div s。如果我使用 admin 登录:
    <li sec:authorize="hasRole('admin')">Entry 1</li>
    <li sec:authorize="hasAnyRole('admin', 'user')">Entry 2</li>

    什么都不显示,而
    <li sec:authorize="hasAuthority('read')">Entry 3</li>
    <li sec:authorize="hasAnyAuthority('read', 'write')">Entry 4</li>

    完美地工作。

    现在我正在使用 role作为我的容器 privileges , 有没有办法允许访问 div为“整体” role ?我真的必须列出所有 privileges ?还是我在这里混了一些东西?谢谢。

    主要思想是:
  • 用户 1
    with Role 'admin'

    with Privilege 'read' / 'write'
  • 用户 2
    with Role 'user'

    with Privilege 'read'

  • 在 Thymeleaf 中:

    为所有具有 admin 角色的用户显示一个 div
    <li sec:authorize="hasRole('ROLE_ADMIN')">Entry 1</li>
    并显示所有使用权限的 div 写入
    <li sec:authorize="hasAuthority('READ_PRIVILEGE')">Entry 1</li>
    这甚至可能/“要走的路?”我的意思是,如果我无法为整个组授予访问页面的权限,那么将权限分组到一个组(角色)的意义是什么?

    最佳答案

    通常,您不需要包含 ROLE_字首。

    但是,当涉及到 Thymeleaf 时,不仅要包含它,它还区分大小写:

    <li sec:authorize="hasRole('ROLE_ADMIN')">Admin</li>
    <li sec:authorize="hasRole('ROLE_USER')">User</li>

    此外, ROLE_USER 的替代方案(默认情况下授予所有经过身份验证的用户该角色)将使用 isAuthenticated()相反,像这样:
    <li sec:authorize="isAuthenticated()">Authenticated users can see this</li>

    如果您想查看当前用户的角色类型,您可以将以下内容添加到您的页面:
    <span sec:authentication="principal.authorities"></span>

    它应该在加载页面时呈现一系列角色,例如 [ROLE_USER, ROLE_ADMIN]
    Reference

    关于Spring Security 'Roles' 和 'Privileges' 和 Thymeleaf 'hasRole' 和 'hasAuthority',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50233746/

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