jss
V2EX  ›  Java

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

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