【问题标题】:Configure Apache Shiro Permissions配置 Apache Shiro 权限
【发布时间】:2016-09-28 18:38:15
【问题描述】:

事情是这样的: 我希望用户具有这样的角色:

表用户: id|用户名|role_id

表角色: id|name|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 = ?)

有没有办法做到这一点? 我已经搜索了好几天了。我将衷心感谢您的帮助。 在此先感谢各位。

【问题讨论】:

    标签: java spring-mvc shiro


    【解决方案1】:

    您是否认为将权限存储在另一个表中会更好,以便您可以进一步修改和增强

    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
    

    【讨论】:

    • 你好,开发者。我做了以下操作:表用户:id|username|role_id 表角色:id|name 表权限:id|name|role_id apache shiro.ini: jdbcRealm.authenticationQuery = SELECT password from users where username = ? jdbcRealm.userRolesQuery = 从角色中选择名称 where id = (select role_id FROM users WHERE username = ?) jdbcRealm.permissionsQuery = SELECT name FROM permissions WHERE UPPER(role_id)=UPPER(?) 它不起作用,当我这样做:System.out.println(currentUser.isPermitted("customer:add")); 它显示为 false,你知道为什么会这样吗?
    • 它应该可以检查你是否在 shiro.ini jdbcRealm.permissionsLookupEnabled = true 中有这个
    • 现在完全可以用了!!!!!!,非常感谢...我真的很感激你所做的:D
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-07-12
      • 2019-11-23
      • 2013-04-26
      • 2017-06-14
      • 2013-02-26
      • 2017-11-27
      • 2019-06-29
      • 2012-10-20
      • 2021-07-30
      相关资源
      最近更新 更多