1、排除token验证9 q* X3 e& \6 a; i
$ c) X: F1 l/ Z5 c* e如下图,访问自己写的接口无效。提示token失效3 C7 b7 w# }5 e; k0 V0 [
& O/ q9 [' i# x1 x P
我们可以找到这个ShiroConfig.java类,将以下注册 jwt 的代码注释掉,如下图* _3 |9 D/ X' u! Z4 }8 q0 ~3 r
2、前端是如何传token到后端的?4 ~# F1 b0 F7 x L, D/ n) ]2 j
' t/ [1 V5 N! H" k3 I; t抓取一个请求,可以看到有一个名为X-Access-Token的Request headers- a% D, e* W5 K8 a6 M! C R
9 H: N& D$ h9 I. W# G
3、在controller上使用 @RequiresRoles("admin")
7 |6 c2 e) K5 r* o3 q3 \, Z" J( Z0 B' D6 H
直接访问则会报错如下,只有当前用户的角色是admin的情况下才能访问* h& @, }: B; r `, C9 _$ m# q
& e% B" [0 K) O$ E( Q/ H4 [& A
再来看org.jeecg.common.exception.JeecgBootExceptionHandler这个类,是全局异常处理器,里面有这个方法。即是它截获了UnauthorizedException.class, AuthorizationException.class两个异常。然后在这里处理# ^9 ~ r; a% l- b5 a
" k8 ]% b) o% E, [8 [1 B
如果要正常访问被这个注解所修饰的接口,那么请不要按照第一步的方式注释掉那段代码。
" X/ {" j$ |/ b8 n! ^然后将已经登录admin账户后的浏览器请求的的这段信息copy下来
Y4 f1 T& w; B, X$ @2 R
3 W9 g1 `. U* r2 [3 n4 o
' V3 G$ J8 J. D u粘贴到postman里,带上token后请求即可!9 t% T C2 ?) c9 R9 k8 |0 m
" w0 M. i5 U: e5 L
4、获得当前用户9 j. S! w4 y% N+ e+ m
/ Z* K. q F2 A
1、直接获取,注意若不传token则获取的将是null0 G7 @: k' i& I
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();System.out.println(sysUser);2、或者使用根据token获取用户信息
( ^. U* O# d Y# W$ V( ?- C- k7 _org.jeecg.common.system.util.JwtUtil.getUsername(token)5、打印sql
; G; X! ^4 V { J2 e, X9 k
* D: ]+ `; u4 w* Gapplication-dev.yml文件! I1 F/ q T6 I; w, }5 j
configuration: # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl再配合mybatis-log-plugin插件即可完成打印真实sql: l* |9 R! `+ `6 K0 t
6、使用原生sql进行分页查询
8 ^! w7 |* m' W- y2 b! t/ Q: J$ Z5 G/ v$ P7 V( _+ c
mapper
/ }# b3 [3 T5 l5 R" @ @Select("SELECT * FROM tb_user where name LIKE concat('%',#{name},'%') ") List queryPage(Page page,@Param("name") String name);TUserService& y; a. _4 |. N$ h0 r
Page queryPage(Page page, TUser tUser);TUserServiceImpl
) N. t9 _5 b& I* Y3 w! e @Override public Page queryPage(Page page, TUser tUser) { return page.setRecords(baseMapper.queryPage(page,tUser.getName())); }TUserController
5 K) [; l- {; b; Y% K2 }; m9 _$ B@AutoLog(value = "测试-分页") @ApiOperation(value = "测试-分页", notes = "测试-分页") @RequestMapping(value = "/getListFy", method = RequestMethod.GET) public Result getListFy(TUser tUser, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { Result result = new Result(); Page page = new Page(pageNo, pageSize); page = tUserService.queryPage(page,tUser);//通知公告消息 log.info("查询当前页:" + page.getCurrent()); log.info("查询当前页数量:" + page.getSize()); log.info("查询结果数量:" + page.getRecords().size()); log.info("数据总数:" + page.getTotal()); result.setSuccess(true); result.setResult(page); return result; }9 R$ v; L* _0 L- [5 T
Java吧 收集整理 java论坛 www.java8.com