如果只是设置成 anno 的话, 我发现不解析用户信息了...
假设有个接口, 未登录用户和已登录用户都可以访问, 但是已登录用户访问的时候记录访问量+1.
那么应该怎么实现
都可以访问
可以区分是否是已登录用户呢?
求大佬指点
1
nakes 2020-07-29 13:26:55 +08:00
接口设置 anon,然后里面
SecurityUtils.getSubject().isAuthenticated(),true 就是登陆了。获取登录用户记录访问量+1 就行。false 就是未登录,走未登录的方法就行了 |
3
gz911122 OP @nakes
我试了下设置成 anon 的话, 请求不会进入到 AuthenticationFilter, 没得判断 isAuthenticated 了... |
4
liuxiaohua 2020-07-29 15:51:42 +08:00
用户信息存在哪里? token ?
|
5
gz911122 OP @liuxiaohua 对的 token , 本来是继承 AuthenticationFilter, 然后解析 token 放到 Subject 里的...
|
6
chen006 2020-07-29 16:21:37 +08:00
自定义 filter,把 auth 的判断和你的需求放到里面,插到 filterchain 里面
|
7
liuxiaohua 2020-07-29 17:02:14 +08:00
请求接口带 token 了嘛?如果带了直接在接口里面获取一下 token,判断 token 有没有不就行了!!!
|
8
gz911122 OP |
9
liuxiaohua 2020-07-29 17:10:55 +08:00
是呀,shiro 只是在过滤器里设置了接口为 anon 就行,业务逻辑实现就是我刚刚说的那样!!!
|
10
gz911122 OP |
11
liuxiaohua 2020-07-29 17:19:11 +08:00 1
没有其他的解决方法吧。这个问题最底层还是要在业务层判断是否登录用户进行记录访问量+1
|