gpt4 book ai didi

java - 如何将 Java 安全层(Apache Shiro|Spring Security)集成到 webapp 菜单系统

转载 作者:行者123 更新时间:2023-12-01 15:10:09 29 4
gpt4 key购买 nike

正如标题所说,我需要创建一个动态menu stored作为 database 中的一棵树并且计划在其上放置一个接口(interface)。现在我需要决定如何实现 Access Control Layer基于市场上适合此要求的产品。

我大量使用Spring IoC , spring mvc等等....与hibernate对于我的项目。我用过apache shiro以前,这还不错。只是社区还很年轻,所以关于 shiro 的问题需要时间才能做出贡献,而且没有广泛的文档。

我仍然计划使用 shiro无论如何,因为我有过 spring security 没有的经验现在第一个问题应该是将 ACL 与菜单系统|导航系统联系起来是个好主意。如果有人可以分享他在这方面的经验,我将很高兴。

所以我脑海中浮现出这个模型 users , roles , rights , users_rights , roles_users , roles_rights

users //contains creds and user detail
roles //contains roles
rights // contains rights (including menu entries matching rights, if i have to tie them)
roles_users //many-to-many roles-users with extra columns mapped as entity
roles_rights // many-to-many roles-rights with extra columns mapped as entity

users_rights //many-to-many users-rights mapped as entity with extra columns. special rights for user and overwrite the overall rights given by roles. can deny rights given by a role or add rights not inside any roles

所以在权利表中我可以这样:

  id
name // in the form of admin:users:list
description
menu_name // unique name what shows on page
menu_url

唯一的问题是我如何处理子菜单? self 多对多权利?最后一切都变得如此复杂。所以我想要有其他的观点、见解、建议。谢谢

最佳答案

我希望我明白你想要什么。
我认为使用自外键是有效的。
但是,我建议您在创建子菜单时或在更新其中一个父菜单时计算子菜单的“ACL 值”,
因此,在子菜单的 ACL 检查期间,您无需花费时间进行计算。
如果我没有正确使用这些术语,我很抱歉,
一般来说,我的意思是,如果您在一棵树上有一些值,并且该值可能取决于树中父节点的值,
您应该考虑在插入、更新或祖先之一的任何更改期间计算子节点/叶子的值。

关于java - 如何将 Java 安全层(Apache Shiro|Spring Security)集成到 webapp 菜单系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12439170/

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