作者:不染心
时间:2021/8/2
查看数据是从数据库中拿的还是缓存中?
(一)打开debug, 开启缓存
application.yml
# 本项目开启debug日志
logging:
level:
com.dyl.shirocsdn: debug
ShiroConfig.java
// 使用ehcache做本地缓存
customerRealm.setCacheManager(new EhCacheManager());
//开启全局缓存
customerRealm.setCachingEnabled(true);
//开启认证缓存
customerRealm.setAuthenticationCachingEnabled(true);
//开启授权缓存
customerRealm.setAuthorizationCachingEnabled(true);
// 认证name
customerRealm.setAuthenticationCacheName("authenticationCache");
// 授权name
customerRealm.setAuthorizationCacheName("authorizationCache");
(二)测试缓存开启是否有效
开启缓存,运行,并点击登陆按钮两次,查看运行结果:
2021-07-31 10:59:12.932 DEBUG 15624 --- [nio-8080-exec-1] c.d.s.m.UserMapper.selectUserByName : ==> Preparing: select * from user where user_name = ?
2021-07-31 10:59:12.964 DEBUG 15624 --- [nio-8080-exec-1] c.d.s.m.UserMapper.selectUserByName : ==> Parameters: usertest(String)
2021-07-31 10:59:12.991 DEBUG 15624 --- [nio-8080-exec-1] c.d.s.m.UserMapper.selectUserByName : <== Total: 1
2021-07-31 10:59:13.041 INFO 15624 --- [nio-8080-exec-1] c.d.s.service.impl.UserServiceImpl : usertest 认证成功
2021-07-31 10:59:13.043 INFO 15624 --- [nio-8080-exec-1] c.d.s.shiro.realms.CustomerRealm : ====授权开始===
2021-07-31 10:59:13.043 DEBUG 15624 --- [nio-8080-exec-1] c.d.s.m.UserMapper.selectUserByName : ==> Preparing: select * from user where user_name = ?
2021-07-31 10:59:13.044 DEBUG 15624 --- [nio-8080-exec-1] c.d.s.m.UserMapper.selectUserByName : ==> Parameters: usertest(String)
2021-07-31 10:59:13.046 DEBUG 15624 --- [nio-8080-exec-1] c.d.s.m.UserMapper.selectUserByName : <== Total: 1
2021-07-31 10:59:13.050 DEBUG 15624 --- [nio-8080-exec-1] c.d.s.m.UserMapper.selectPermisByRole : ==> Preparing: SELECT permission_code FROM `permission` as t1 INNER JOIN role_permission as t2 on t1.permission_id = t2.permission_id INNER JOIN role as t3 on t3.role_id = t2.role_id where role_code = ?;
2021-07-31 10:59:13.050 DEBUG 15624 --- [nio-8080-exec-1] c.d.s.m.UserMapper.selectPermisByRole : ==> Parameters: user(String)
2021-07-31 10:59:13.088 DEBUG 15624 --- [nio-8080-exec-1] c.d.s.m.UserMapper.selectPermisByRole : <== Total: 2
2021-07-31 10:59:13.089 INFO 15624 --- [nio-8080-exec-1] c.d.s.shiro.realms.CustomerRealm : usertest的权限有:[user, user:test]
2021-07-31 10:59:14.610 DEBUG 15624 --- [nio-8080-exec-3] c.d.s.m.UserMapper.selectUserByName : ==> Preparing: select * from user where user_name = ?
2021-07-31 10:59:14.611 DEBUG 15624 --- [nio-8080-exec-3] c.d.s.m.UserMapper.selectUserByName : ==> Parameters: usertest(String)
2021-07-31 10:59:14.614 DEBUG 15624 --- [nio-8080-exec-3] c.d.s.m.UserMapper.selectUserByName : <== Total: 1
2021-07-31 10:59:14.615 INFO 15624 --- [nio-8080-exec-3] c.d.s.service.impl.UserServiceImpl : usertest 认证成功
2021-07-31 10:59:14.615 INFO 15624 --- [nio-8080-exec-3] c.d.s.shiro.realms.CustomerRealm : ====授权开始===
2021-07-31 10:59:14.616 DEBUG 15624 --- [nio-8080-exec-3] c.d.s.m.UserMapper.selectUserByName : ==> Preparing: select * from user where user_name = ?
2021-07-31 10:59:14.616 DEBUG 15624 --- [nio-8080-exec-3] c.d.s.m.UserMapper.selectUserByName : ==> Parameters: usertest(String)
2021-07-31 10:59:14.619 DEBUG 15624 --- [nio-8080-exec-3] c.d.s.m.UserMapper.selectUserByName : <== Total: 1
2021-07-31 10:59:14.620 DEBUG 15624 --- [nio-8080-exec-3] c.d.s.m.UserMapper.selectPermisByRole : ==> Preparing: SELECT permission_code FROM `permission` as t1 INNER JOIN role_permission as t2 on t1.permission_id = t2.permission_id INNER JOIN role as t3 on t3.role_id = t2.role_id where role_code = ?;
2021-07-31 10:59:14.620 DEBUG 15624 --- [nio-8080-exec-3] c.d.s.m.UserMapper.selectPermisByRole : ==> Parameters: user(String)
2021-07-31 10:59:14.633 DEBUG 15624 --- [nio-8080-exec-3] c.d.s.m.UserMapper.selectPermisByRole : <== Total: 2
2021-07-31 10:59:14.634 INFO 15624 --- [nio-8080-exec-3] c.d.s.shiro.realms.CustomerRealm : usertest的权限有:[user, user:test]
nio-8080-exec-1是第一次认证授权
nio-8080-exec-3是第二次认证授权
两次都调用了数据库查询语句子,数据都从数据库中获取,其有一定的压力。
ShiroConfig.java
不开缓存,将下面代码注释掉
// 使用ehcache做本地缓存
// customerRealm.setCacheManager(new EhCacheManager());
2021-07-31 10:47:37.154 DEBUG 4072 --- [nio-8080-exec-2] c.d.s.m.UserMapper.selectUserByName : ==> Preparing: select * from user where user_name = ?
2021-07-31 10:47:37.186 DEBUG 4072 --- [nio-8080-exec-2] c.d.s.m.UserMapper.selectUserByName : ==> Parameters: usertest(String)
2021-07-31 10:47:37.213 DEBUG 4072 --- [nio-8080-exec-2] c.d.s.m.UserMapper.selectUserByName : <== Total: 1
2021-07-31 10:47:37.265 INFO 4072 --- [nio-8080-exec-2] c.d.s.service.impl.UserServiceImpl : usertest 认证成功
2021-07-31 10:47:37.266 INFO 4072 --- [nio-8080-exec-2] c.d.s.shiro.realms.CustomerRealm : ====授权开始===
2021-07-31 10:47:37.267 DEBUG 4072 --- [nio-8080-exec-2] c.d.s.m.UserMapper.selectUserByName : ==> Preparing: select * from user where user_name = ?
2021-07-31 10:47:37.267 DEBUG 4072 --- [nio-8080-exec-2] c.d.s.m.UserMapper.selectUserByName : ==> Parameters: usertest(String)
2021-07-31 10:47:37.270 DEBUG 4072 --- [nio-8080-exec-2] c.d.s.m.UserMapper.selectUserByName : <== Total: 1
2021-07-31 10:47:37.273 DEBUG 4072 --- [nio-8080-exec-2] c.d.s.m.UserMapper.selectPermisByRole : ==> Preparing: SELECT permission_code FROM `permission` as t1 INNER JOIN role_permission as t2 on t1.permission_id = t2.permission_id INNER JOIN role as t3 on t3.role_id = t2.role_id where role_code = ?;
2021-07-31 10:47:37.274 DEBUG 4072 --- [nio-8080-exec-2] c.d.s.m.UserMapper.selectPermisByRole : ==> Parameters: user(String)
2021-07-31 10:47:37.280 DEBUG 4072 --- [nio-8080-exec-2] c.d.s.m.UserMapper.selectPermisByRole : <== Total: 2
2021-07-31 10:47:37.281 INFO 4072 --- [nio-8080-exec-2] c.d.s.shiro.realms.CustomerRealm : usertest的权限有:[user, user:test]
2021-07-31 10:47:38.966 INFO 4072 --- [nio-8080-exec-3] c.d.s.service.impl.UserServiceImpl : usertest 认证成功
2021-07-31 10:47:40.131 INFO 4072 --- [nio-8080-exec-4] c.d.s.service.impl.UserServiceImpl : usertest 认证成功
nio-8080-exec-2是第一次认证授权
nio-8080-exec-3是第二次认证
nio-8080-exec-4是第三次认证
可以发现没有从数据库中取数据,直接缓存中有,认证成功
版权声明:本文为qq_38234785原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。