gpt4 book ai didi

database - Apache Shiro 中每个用户的不同权限?

转载 作者:太空狗 更新时间:2023-10-30 01:53:59 24 4
gpt4 key购买 nike

我用实体用户和权限建立了一个数据库

用户(id、电子邮件、密码、权限)权限(id,create_user,delete_user,user_fk)

create_user 和 delete_user 是 BOOLEAN。

关系:一对一

现在每个用户都可以拥有自己的权限。

我的问题是:如何使用shiro从数据库中读取权限?

最佳答案

如果你真的只想在用户级别分配权限,你可以“伪造”角色表让 Shiro 开心。

如 Wouter 所述,使用 JdbcRealm 并为您的表设置指定 3 个查询。您应该修改您的权限表以具有以下结构:

permission (id, permissionname, user_fk)

然后根据需要为 create_user/delete_user 权限插入行。通过这种方式,可以非常简单地向您的设置添加另一个权限(例如 reset_password),而无需修改数据库模式。

在 shiro.ini 中(或者你如何称呼你的 shiro 配置文件):

jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm

对于查询使用这个:

jdbcRealm.authenticationQuery = select password from user where email=?
jdbcRealm.userRolesQuery = select id from user where email=?
jdbcRealm.authenticationQuery = select permissionname from permission where user_fk=?

设置中的小技巧是:您根本没有角色,所以我们只返回用户的 ID 作为角色名称。权限表中的查找完成后,它会使用角色名称 (=user pk) 并返回关联的权限。

关于database - Apache Shiro 中每个用户的不同权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19694366/

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