Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 配置ApacheShiro权限_Java_Spring Mvc_Shiro - Fatal编程技术网

Java 配置ApacheShiro权限

Java 配置ApacheShiro权限,java,spring-mvc,shiro,Java,Spring Mvc,Shiro,事情是这样的: 我希望用户的角色如下: 表格用户: id |用户名|角色| id 表角色: id |名称|添加|用户|添加|客户|配置|邮件|……|……| 权限类型为binary,当用户可以执行操作时,它有1或0,否则 在我的shiro.ini中,我有以下问题: jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm jdbcRealm.authenticationQuery = SELECT password from users where usern

事情是这样的: 我希望用户的角色如下:

表格用户: id |用户名|角色| id

表角色: id |名称|添加|用户|添加|客户|配置|邮件|……|……|

权限类型为binary,当用户可以执行操作时,它有1或0,否则

在我的shiro.ini中,我有以下问题:

jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.authenticationQuery = SELECT password from users where username = ?
jdbcRealm.userRolesQuery = select name from roles where id = (select role_id FROM users WHERE username = ?)
有办法吗?。 我已经找了好几天了。我非常感谢你的帮助。
提前感谢各位。

你们不需要修改一下吗?最好将权限存储在另一个表中,这样你们就可以进一步修改和增强权限了

Table users: id|username|role_id

Table roles: id|name

Table permission: permission|role

now in permission table
customer:add,04   -- 04 is role
mail:configure,04
.....
所以在shiro ini

jdbcRealm.permissionsQuery = SELECT permid FROM apppermissions WHERE  UPPER(roleid)=UPPER(?)
jdbcRealm.permissionsLookupEnabled = true
我明白了!!。 感谢dev,他真的帮助我解决了这个问题,以下是shiro.ini的解决方案

jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.permissionsLookupEnabled = true
jdbcRealm.authenticationQuery = SELECT password from users where username = ?
jdbcRealm.userRolesQuery = select id from roles where id = (select role_id FROM users WHERE username = ?)
jdbcRealm.permissionsQuery = SELECT name FROM permissions WHERE  UPPER(role_id)=UPPER(?)

我希望它能在将来帮助别人,并感谢您的帮助@dev

Hello dev。我做了以下工作:表用户:id |用户名|角色| id表角色:id |名称表权限:id | name |角色| id和apache shiro.ini:jdbcream.authenticationQuery=从username=?jdbcRealm.userRolesQuery=从角色中选择名称,其中id=从用户名=?jdbcream.permissionsQuery=从权限中选择名称,其中UPPERrole\u id=UPPER不起作用,当我这样做时:System.out.printlncurrentUser.isPermissionDCustomer:add;它显示为false,您知道为什么会发生这种情况吗?应该可以检查您是否在shiro.ini jdbcRealm.permissionsLookupEnabled=True中有此功能现在完全可以工作了!!!!!,非常感谢你…我真的很感激你所做的:D