美文网首页
Reaml之JdbcRealm

Reaml之JdbcRealm

作者: Colors_a378 | 来源:发表于2018-12-17 22:40 被阅读0次

            JdbcRealm是Shiro提供的另外一种Realm实现,当记录用户身份、角色、权限的信息存储在数据库中就应该使用这种实现。通过它的名字我们也可以看出是通过jdbc的方法是来访问数据库。

    需要shiro-core、slf4j、Junit、Druid以及连接mysql的Jar包

            使用JdbcRealm作为Realm自然会涉及到数据库对象:dataSource。这里使用Druid连接池。配置好数据库后,在29行就把它和JdbcRealm关联起来。同时在第30行开启权限查找,这是必须的,不然第四十行代码抛出异常表示没有对应权限。

            但是,第38-40行的身份验证、角色验证、权限验证究竟到数据库test的那个表下找到相关信息,从而与37行代码所示的信息比对。在上面这个截图里看不出任何端倪。

           这是因为Shiro事先预设了。以38行的身份验证说明,当身份验证时,默认执行“select password from users where username = ?”,执行38行时,"?"被“tom”填充。角色验证、权限验证同样如此,就是说test数据库是我实现已经精心设计好的,表名,字段名都是符合Shiro的预期。

            如果要自定义各验证的查询语句,针对上述的引用对象realm,调用如下方法:

            realm.setAuthenticationQuery(String sql)    该方法设置身份验证的sql语句。

            realm.setUserRolesQuery(String sql)    该方法设置角色验证的sql语句。

            realm.setPermissionsQuery(String sql)    该方法设置权限验证的sql语句。

    相关文章

      网友评论

          本文标题:Reaml之JdbcRealm

          本文链接:https://www.haomeiwen.com/subject/ltkhkqtx.html