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

[转 Java 新人]请问, REST API 用什么方案做接口权限控制比较合适

  •  
  •   jss · 2021-01-22 07:55:31 +08:00 · 4264 次点击
    这是一个创建于 1433 天前的主题,其中的信息可能已经有所发展或是发生改变。
    上手项目基于 spring boot 2.4 开发
    26 条回复    2021-03-02 14:03:30 +08:00
    hly9469
        1
    hly9469  
       2021-01-22 08:06:44 +08:00 via iPhone
    security
    iceneet
        2
    iceneet  
       2021-01-22 08:20:18 +08:00
    security 或者 shiro
    jorneyr
        3
    jorneyr  
       2021-01-22 09:10:25 +08:00
    我个人比较喜欢 Spring Security 。
    yisheyuanzhang
        4
    yisheyuanzhang  
       2021-01-22 09:19:34 +08:00
    单体项目 spring security 直接用 session 就行了。 分布式 /微服务用 spring security oauth2.0
    写过一个单体的 demo https://gitee.com/zhaoydo/uaa-demo
    totoro52
        5
    totoro52  
       2021-01-22 09:24:24 +08:00
    小项目 shiro 够用 如果想要使用 spring 家族的就上 security 不过 shiro 的学习成本很低,一天就可以上手,security 很重,涉及的执行流程很多,小白慎入,光配置就很复杂。
    totoro52
        6
    totoro52  
       2021-01-22 09:24:53 +08:00
    还有 shiro 整合到 spring 会有一些坑,需要留意
    threeEggs123
        7
    threeEggs123  
       2021-01-22 09:29:53 +08:00 via Android
    前面加一层网关,在网关上面做。我们用的是 aws gateway
    Jrue0011
        8
    Jrue0011  
       2021-01-22 09:31:21 +08:00
    我也偏向 Spring Security,主要是和 Spring 集成比较好。。。
    totoro52
        9
    totoro52  
       2021-01-22 09:33:34 +08:00
    @Jrue0011 是的 当初项目采用他就是因为好集成 不过最强大的还是他的 oauth2 如果只做简单的授权我还是推荐 shiro 虽然我讨厌的 shiro 的配置 没有 security 来的优雅
    ccppgo
        10
    ccppgo  
       2021-01-22 09:39:10 +08:00
    @yisheyuanzhang 老哥你能把开源许可证加上吗
    wozhizui
        11
    wozhizui  
       2021-01-22 10:00:03 +08:00
    选 Spring Security,集成 spring boot 比较好,最近也在做 spring 的企业项目,收藏下此帖子。
    zzzmh
        12
    zzzmh  
       2021-01-22 10:04:28 +08:00
    如果业务不复杂就自己写咯,用 jwt token,数据库开一个权限字段,然后在拦截器里面做鉴权
    yisheyuanzhang
        13
    yisheyuanzhang  
       2021-01-22 10:06:50 +08:00
    @ccppgo 谢谢提醒,已加
    tianhei826
        14
    tianhei826  
       2021-01-22 10:41:14 +08:00
    做个 cop
    echo1937
        15
    echo1937  
       2021-01-22 10:43:31 +08:00
    Spring Security,配置倒是不复杂,就是学习路线陡峭一点。
    cheng6563
        16
    cheng6563  
       2021-01-22 13:41:01 +08:00
    Spring Security 太重了,就算花时间配好,过一过月就完全看不懂配了啥。
    有时候要改点功能也无从下手。
    建议直接自己写了,也不是个多复杂的组件。
    shaoyijiong
        17
    shaoyijiong  
       2021-01-22 17:26:11 +08:00
    自己手写比较好 在网关拦截下
    通过用户信息和接口地址来判断是否有权限访问该接口
    lvxiaomao
        18
    lvxiaomao  
       2021-01-22 17:50:33 +08:00
    可以使用切面方式,自己写一个吧
    KuroNekoFan
        19
    KuroNekoFan  
       2021-01-22 17:56:42 +08:00 via iPhone
    切面做基础的用户验证,细粒度的就要侵入到业务代码里了
    liian2019
        20
    liian2019  
       2021-01-22 18:00:25 +08:00
    入门搞 shiro
    tomsun28
        21
    tomsun28  
       2021-01-22 18:09:45 +08:00
    ys2016814
        22
    ys2016814  
       2021-01-22 18:16:38 +08:00
    切面加注解实现
    hsluoyz
        23
    hsluoyz  
       2021-01-25 00:26:09 +08:00
    可以试试 Casbin Java 版本
    jss
        24
    jss  
    OP
       2021-01-28 08:44:28 +08:00
    @ys2016814 我自己写的就是切面加注解,但是有个问题 接口有参数验证时,会先验证参数 后进行权限验证,我是在 doBefore (目标方法调用之前执行)进行验证逻辑的
    @lvxiaomao
    @KuroNekoFan
    ys2016814
        25
    ys2016814  
       2021-01-28 09:27:27 +08:00
    @jss 我们有一个本地的线程缓存会在 doFilter 中将重要信息(比如此人的角色角色标识,权限标识,)注册进去,在 destroy 中清除掉,伴随整个访问的生命周期,就可以达成,不同角色展示不同菜单,不同数据,有不同权限
    SkyLine7
        26
    SkyLine7  
       2021-03-02 14:03:30 +08:00
    自己写一个 拦截器+aop
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1033 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 20:15 · PVG 04:15 · LAX 12:15 · JFK 15:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.