Spring Security 怎么用

2022-03-06 14:58:44 +08:00
 Terminator0826
在公司实习做过后台系统,用 SS 做认证+授权。最近毕设也想参考着做一个后台系统,另外再加一个客户端。

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

说写个 filter 就能替代 spring security 的可能没被拖库过
Terminator0826
2022-03-06 20:31:57 +08:00
@leafre 我客户端的用户表和管理端的用户表是分开的,只是资源标识区分感觉还是不行,因为 SecurityConfig 里面目前配置都只是管理端的拦截逻辑,里面的各种 handler 也是查的管理端的表。总的来说,应该是 config 配置的各种 handler 还有 filter 要怎么优雅地区分才是我想知道的😂
cppc
2022-03-06 21:08:00 +08:00
感觉你说的这个场景就是 spring security oauth 的应用场景,其中 client_user 对应 client authentication ,有很对开源项目可以借鉴,比如 https://github.com/pig-mesh/pig
Terminator0826
2022-03-06 21:11:05 +08:00
@cppc 感谢,我一会研究一下
damai0419
2022-03-06 22:14:54 +08:00
前台后台用一套校验逻辑比较好。
如果非要前台不涉及鉴权的话,可以前台请求头上搞个标志。后面 SS 判断标志,不进行鉴权。
damai0419
2022-03-06 22:20:42 +08:00
诶嘿嘿,推荐一下自己写的博客。
Spring Security 系列: https://juejin.cn/column/6965851836221751309
对你有用的话,给我文章赞一下。
Terminator0826
2022-03-06 23:02:47 +08:00
@damai0419 好嘞,学习学习

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/838350

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX