Reaml之JdbcRealm

        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)