登录最佳实践是什么?

2021-11-23 17:44:38 +08:00
 7911364440
7232 次点击
所在节点    Java
39 条回复
psnnf
2021-11-23 18:02:58 +08:00
JWT 加个全局拦截器
mgcnrx11
2021-11-23 18:11:23 +08:00
千万别在没想清楚的时候用 JWT [手动狗头
xuanbg
2021-11-23 18:16:13 +08:00
不推荐 JWT ,更不推荐 Spring Security 。自己造个轮子简单实用。
huxiaofan1223
2021-11-23 21:27:51 +08:00
@mgcnrx11 为啥呢
kytrun
2021-11-23 21:32:40 +08:00
推荐 sa-token
LeeReamond
2021-11-23 21:38:55 +08:00
@huxiaofan1223 jwt 只能应对它的初始设计场景,也就是令牌签发后有效期内一直有效。如果你有后续的需求,比如用户的令牌丢了,或者用户想要改密码,要让已签发的令牌失效,那么 jwt 就不能做到,需要在 jwt 基础上再加补丁。而补丁的实现,由于把存在性校验换成了不存在性校验,算法上确实可以做到一定的优化,但这种优化往往只有在特大数据量下才能表现出实际差距,考虑到开发成本,这未必值当。对于没想清楚需求的应用来说,直接保存 sessionid 是最直接也最方便的做法。
huxiaofan1223
2021-11-23 21:41:28 +08:00
@LeeReamond 用 redis 和拦截器可以解决你说的这个吗?
huxiaofan1223
2021-11-23 21:42:58 +08:00
@LeeReamond cookie 和 session 方便是方便,问题是对客户端不友好吧(我是前端,这是我的猜测)
vance123
2021-11-24 00:25:57 +08:00
交给第三方处理(大雾)
当初本着能外包则外包的原则,选了 auth0.com 做用户管理,结果要学的东西更多了
clf
2021-11-24 00:34:17 +08:00
sa token 挺好的。登录的 token 别用 jwt ,不然 token 自动续签会很麻烦。
gargar
2021-11-24 00:35:01 +08:00
@vance123 哈哈,跟上云一样,以为不用自己维护机房了,结果要学的东西一点都不少
jinliming2
2021-11-24 01:07:51 +08:00
@huxiaofan1223 客户端问题也不大,正常的网络请求库都有 cookie jar ,自动管理 cookie 的
chendy
2021-11-24 08:25:34 +08:00
一个 ThreadLocal 存当前用户(和权限) + 一个拦截器存进去+删掉,完事
可以参考安全框架的设计,但是不建议用,因为麻烦。。。
JamesMackerel
2021-11-24 09:00:28 +08:00
一个服务:数据库里存密码,用 bcrypt 存储密码。
多个服务:用 sso ,可以用 oauth 或者 cas 。

登录验证的 filter 可以抄一下 java-cas-client 里的 AuthenticationFilter ,获取当前用户信息的操作可以抄 AssertionHolder
banlifeather4
2021-11-24 09:10:13 +08:00
@LeeReamond

1. 用户令牌丢了?
回答:这个问题....


2. 用户改密码后,使已签发的令牌失效
回答:用户密码后,可以再生成新的 token , 你可以选择返回前端, 让他更新请求令牌,或让用户重新登录(取决于你的需求设计)
sujin190
2021-11-24 09:14:19 +08:00
@banlifeather4 #15 我猜改密码这个的意思是用户登录了两台设备,在其中一台设备上改密码了,无法把另外一台踢下线,否则就得查询用户状态了,这样还不如用 session 了
sujin190
2021-11-24 09:16:17 +08:00
@huxiaofan1223 #8 因为好多不知道 cookiejar 的,所以各种传 cookie 和 session 对客户端不友好也真是。。
banlifeather4
2021-11-24 09:20:57 +08:00
@sujin190

EMMM , 我们有用到 WS , 所以一些关键流程, 会推送消息到前端, 让前端处理一些流程;
就像我们使用大厂的 APP 一样, 会弹出来, 密码已修改,需要重新登录
masterclock
2021-11-24 09:22:03 +08:00
1. 不登录
2. 用 Keycloak 之类的东西,总之保证请求到自己的服务的时候,鉴权啥的都已经完成了,不需要关心了
LeeReamond
2021-11-24 09:22:44 +08:00
@banlifeather4 很正常的需求,不知道你想问什么,比如手机作为唯一身份认证终端的时代 ,丢手机当然不是 0 概率事件,其他认证方式同理,你这问题属于想的太多做得太少,做了就遇到这种需求了。

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

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

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

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

© 2021 V2EX