配置 Apache Shiro 权限
Configure Apache Shiro Permissions
事情是这样的:
我希望用户具有这样的角色:
Table 用户:
id|用户名|role_id
Table 角色:
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 = ?)
有办法吗?
我已经搜索了好几天了。我将衷心感谢您的帮助。
提前谢谢大家。
您不认为将权限存储在另一个 table 中更好,这样您就可以像
那样进一步修改和增强
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
我明白了!!
感谢开发者,他真的帮我解决了这个问题,这是解决方案(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
事情是这样的: 我希望用户具有这样的角色:
Table 用户: id|用户名|role_id
Table 角色: 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 = ?)
有办法吗? 我已经搜索了好几天了。我将衷心感谢您的帮助。 提前谢谢大家。
您不认为将权限存储在另一个 table 中更好,这样您就可以像
那样进一步修改和增强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
我明白了!! 感谢开发者,他真的帮我解决了这个问题,这是解决方案(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