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

前后端分离的 spring cloud 微服务中对 spring security 到底该怎么使用?感觉有点懵。

  •  
  •   polyang · 2021-08-19 11:54:14 +08:00 · 2466 次点击
    这是一个创建于 973 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个 spring cloud 系列微服务中通常包含网关微服务、用户微服务、订单微服务(或者其他类似的业务微服务),对于此,我看网上很多文章都说到用 spring security oauth 2.0,然后认证时还需要跳转登录页面,但是现在都是前后端分离的,可能不可能使用认证服务的登录页面吧?
    PS:oauth 2.0 的流程我是清楚的,只是不知道 spring security 到底该怎么在 spring cloud 中应用。
    14 条回复    2021-08-20 09:21:35 +08:00
    harde
        1
    harde  
       2021-08-19 11:59:28 +08:00
    技术选型是架构的事,如果你不知道要不要用它,那么答案就是不要用。

    不要为了用某种技术而用某种技术,适合才是最好的。
    jimmyismagic
        2
    jimmyismagic  
       2021-08-19 12:02:58 +08:00
    可以不跳啊
    xuanbg
        3
    xuanbg  
       2021-08-19 12:57:26 +08:00
    别用,自己撸一个更简单
    totoro52
        4
    totoro52  
       2021-08-19 13:33:52 +08:00
    https://v2ex.com/t/796071#reply52 看我这个帖子 别踩坑了
    mmdsun
        5
    mmdsun  
       2021-08-19 13:41:36 +08:00 via Android
    可以用 spring cloud security

    有 OAuth2RestTemplate

    https://spring.io/projects/spring-cloud-security
    arbit
        6
    arbit  
       2021-08-19 14:24:42 +08:00
    之前也遇到这个问题,看了码云上开源的那几个用 cloud 搭建的项目,后台管理都是用的 oath2 中的密码模式登录,但是最新版本 security 废弃了 authorization Server,很多类过时了,项目也没有更新
    后面考虑了,其实基于角色的 rbac 权限模块也没多少内容,还不如自己实现灵活一点
    开源的可以参考下 sa-token 这个项目
    polyang
        7
    polyang  
    OP
       2021-08-19 14:29:01 +08:00
    @harde
    @xuanbg
    @totoro52
    @arbit 谢谢各位,其实我的意思是想知道一下怎么用,不一定生产中会用到,但起码得知道这个,不然以后面试啥的,别人问了答不出来就不好了。
    polyang
        8
    polyang  
    OP
       2021-08-19 14:29:23 +08:00
    @mmdsun 好的,谢谢,我去瞅瞅
    arbit
        9
    arbit  
       2021-08-19 14:33:33 +08:00
    @polyang #7 我理解的是像做后台管理的时候需要登录,前后端分离用的前端页面,然后登录接口用的 oauth2 的密码模式(授权码模式才需要跳转页面),登录成功后返回 token,再调用其他接口就是了
    然后当有其他三方的应用想接入当前平台的微服务,就用到授权码模式,可以定义一个登录页面,用于三方应用授权码登录了,登录成功后跳转会三方应用的页面
    totoro52
        10
    totoro52  
       2021-08-19 14:56:21 +08:00
    @polyang 我强烈不推荐你使用官方的 oauth 包 从 5.2 之前 跳动非常大 官方频繁改动 而且不能完全满足国内业务需求 如果真要 自己手撸比这个快
    x940727
        11
    x940727  
       2021-08-19 16:06:35 +08:00
    Spring Cloud 用 Spring Cloud Oauth 的依赖就可以了,如果你需要自己实现一个 OAuth 授权中心,Spring Authorization Server 2021 年 8 月 17 号正式移动到 Spring Project 里面了,估计已经可以正式环境使用了,就是资料少点,之前是 Experimental 的。
    Macolor21
        12
    Macolor21  
       2021-08-19 17:05:53 +08:00
    @x940727 正解
    jorneyr
        13
    jorneyr  
       2021-08-19 17:20:45 +08:00
    Web 端使用 Ajax 请求数据先到 Gateway,Gateway 发现要请求的资源需要登陆,而你还没登陆,就返回一个未登陆的结果,Web 端跳转到登录页面进行登陆,登陆的方式也是用 Ajax 提交,而不是 Spring Security 的 UsernamePasswordAuthenticationFilter (这个和登录网页一起用的)。
    cheng6563
        14
    cheng6563  
       2021-08-20 09:21:35 +08:00   ❤️ 1
    别用,这组件太乱了,搭项目时搞了大半天,过了几天要修改点需求,前面配的东西全忘了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1004 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 22:20 · PVG 06:20 · LAX 15:20 · JFK 18:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.