配置Apache Shiro权限

时间:2016-05-30 21:50:11

标签: java spring-mvc shiro

这是事情: 我希望用户具有以下角色:

表用户: ID |用户名| ROLE_ID

表格角色: ID |名称| add_users | add_customers | configure_mail | ... | ... | ...

权限是二进制类型,当用户可以执行操作时它具有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 = ?)

有办法吗? 我现在已经搜索了几天。我将衷心感谢您的帮助。 先谢谢你们。

2 个答案:

答案 0 :(得分:2)

你最好不要将权限存储在另一个表中,以便你可以进一步修改和增强

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

答案 1 :(得分:1)

我懂了!! 感谢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

相关问题