V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gz911122
V2EX  ›  Java

shiro 怎么实现一个接口同时允许 anno 和 authc 访问呢?

  •  
  •   gz911122 · 2020-07-29 12:52:39 +08:00 · 2065 次点击
    这是一个创建于 1367 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果只是设置成 anno 的话, 我发现不解析用户信息了...

    假设有个接口, 未登录用户和已登录用户都可以访问, 但是已登录用户访问的时候记录访问量+1.

    那么应该怎么实现

    1. 都可以访问

    2. 可以区分是否是已登录用户呢?

    求大佬指点

    11 条回复    2020-07-29 17:19:11 +08:00
    nakes
        1
    nakes  
       2020-07-29 13:26:55 +08:00
    接口设置 anon,然后里面
    SecurityUtils.getSubject().isAuthenticated(),true 就是登陆了。获取登录用户记录访问量+1 就行。false 就是未登录,走未登录的方法就行了
    gz911122
        2
    gz911122  
    OP
       2020-07-29 13:52:43 +08:00
    @nakes 谢谢我试试.

    这种情况下还能获取到设置的用户信息么?
    gz911122
        3
    gz911122  
    OP
       2020-07-29 14:30:22 +08:00
    @nakes
    我试了下设置成 anon 的话, 请求不会进入到 AuthenticationFilter, 没得判断 isAuthenticated 了...
    liuxiaohua
        4
    liuxiaohua  
       2020-07-29 15:51:42 +08:00
    用户信息存在哪里? token ?
    gz911122
        5
    gz911122  
    OP
       2020-07-29 16:14:38 +08:00
    @liuxiaohua 对的 token , 本来是继承 AuthenticationFilter, 然后解析 token 放到 Subject 里的...
    chen006
        6
    chen006  
       2020-07-29 16:21:37 +08:00
    自定义 filter,把 auth 的判断和你的需求放到里面,插到 filterchain 里面
    liuxiaohua
        7
    liuxiaohua  
       2020-07-29 17:02:14 +08:00
    请求接口带 token 了嘛?如果带了直接在接口里面获取一下 token,判断 token 有没有不就行了!!!
    gz911122
        8
    gz911122  
    OP
       2020-07-29 17:07:48 +08:00
    @liuxiaohua
    @chen006

    嗯就是跟 shiro 没关系了呗...?
    liuxiaohua
        9
    liuxiaohua  
       2020-07-29 17:10:55 +08:00
    是呀,shiro 只是在过滤器里设置了接口为 anon 就行,业务逻辑实现就是我刚刚说的那样!!!
    gz911122
        10
    gz911122  
    OP
       2020-07-29 17:12:48 +08:00
    @liuxiaohua 是的 这种是可以的. 谢谢

    有用 shiro 来解决的办法嘛?
    liuxiaohua
        11
    liuxiaohua  
       2020-07-29 17:19:11 +08:00   ❤️ 1
    没有其他的解决方法吧。这个问题最底层还是要在业务层判断是否登录用户进行记录访问量+1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2989 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 90ms · UTC 13:41 · PVG 21:41 · LAX 06:41 · JFK 09:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.