V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Terminator0826
V2EX  ›  问与答

Spring Security 怎么用

  •  
  •   Terminator0826 · 2022-03-06 14:58:44 +08:00 via Android · 2452 次点击
    这是一个创建于 998 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在公司实习做过后台系统,用 SS 做认证+授权。最近毕设也想参考着做一个后台系统,另外再加一个客户端。

    现在的问题是后台系统和客户端的用户表是分开的( sys_user 和 client_user ),也想统一用 SS 鉴权。我看到公司用 SS 做的后台除了查用户表认证外,还联表查角色菜单进行授权,我打算毕设的后台系统逻辑也这么弄。但客户端比较简单,只需要认证 token 合法性就放行,不需要涉及角色菜单这些,这种情况我觉得用 SS 可能有点重,但非要用的话由于两个用户表互相独立,那就需要走不同的登录逻辑了。大佬们应该如何优雅地使用 SS 处理后台的认证+授权和客户端的认证呢?感激不尽!
    12 条回复    2022-03-06 23:02:47 +08:00
    putaozhenhaochi
        1
    putaozhenhaochi  
       2022-03-06 17:16:17 +08:00 via Android
    太重不用。
    自己写个过滤器。
    pelloz
        2
    pelloz  
       2022-03-06 17:25:33 +08:00
    不要用,等你看懂并且能够正确使用的时候,其他业务代码早就写完了。你自己先简单写个过滤器就行。
    bigbyto
        3
    bigbyto  
       2022-03-06 19:12:40 +08:00 via iPhone
    看一下官方文档吧,写的非常详细了。spring security 的代码质量是 spring 家族中数一数二的高,花点心思会有很大收获。
    Terminator0826
        4
    Terminator0826  
    OP
       2022-03-06 19:43:22 +08:00 via Android
    @bigbyto 其实是想问我后台系统那边用了,客户端那边也用合适吗,客户端那边不像后台系统那种用法,仅仅只是拦截了校验一下 token 。客户端如果用应该怎么区分和后台系统那边的校验逻辑。目前网上也搜不到类似的做法,感觉可以用策略模式区分不同端的逻辑,但是感觉要写好多东西,还是说客户端就像前面老哥说的那样简单写个 filter 就可以了。
    bigbyto
        5
    bigbyto  
       2022-03-06 19:54:06 +08:00 via iPhone
    @Terminator0826 简单验证确实直接用 filter 就可以了,没必要引入一个框架处理。
    leafre
        6
    leafre  
       2022-03-06 19:54:14 +08:00
    需要鉴权的 url 资源使用标识区分开,如 api_admin/**/**,非管理端路径无需鉴权直接放行

    说写个 filter 就能替代 spring security 的可能没被拖库过
    Terminator0826
        7
    Terminator0826  
    OP
       2022-03-06 20:31:57 +08:00 via Android
    @leafre 我客户端的用户表和管理端的用户表是分开的,只是资源标识区分感觉还是不行,因为 SecurityConfig 里面目前配置都只是管理端的拦截逻辑,里面的各种 handler 也是查的管理端的表。总的来说,应该是 config 配置的各种 handler 还有 filter 要怎么优雅地区分才是我想知道的😂
    cppc
        8
    cppc  
       2022-03-06 21:08:00 +08:00   ❤️ 1
    感觉你说的这个场景就是 spring security oauth 的应用场景,其中 client_user 对应 client authentication ,有很对开源项目可以借鉴,比如 https://github.com/pig-mesh/pig
    Terminator0826
        9
    Terminator0826  
    OP
       2022-03-06 21:11:05 +08:00 via Android
    @cppc 感谢,我一会研究一下
    damai0419
        10
    damai0419  
       2022-03-06 22:14:54 +08:00
    前台后台用一套校验逻辑比较好。
    如果非要前台不涉及鉴权的话,可以前台请求头上搞个标志。后面 SS 判断标志,不进行鉴权。
    damai0419
        11
    damai0419  
       2022-03-06 22:20:42 +08:00   ❤️ 1
    诶嘿嘿,推荐一下自己写的博客。
    Spring Security 系列: https://juejin.cn/column/6965851836221751309
    对你有用的话,给我文章赞一下。
    Terminator0826
        12
    Terminator0826  
    OP
       2022-03-06 23:02:47 +08:00 via Android
    @damai0419 好嘞,学习学习
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2711 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 15:43 · PVG 23:43 · LAX 07:43 · JFK 10:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.