最近搭了一个lobe-chat服务器版,使用logto管理用户,供几个朋友一起使用,为了方便,没有关闭注册。然而,发现有人疯狂白嫖,想赶紧关了注册干掉白嫖怪。令人惊奇的是,lobe-chat在第一次注册、登陆之后似乎压根儿就没有鉴权了,logto后台能看到每个用户的交互历史有且仅有第一次使用。也就是说,一旦某个用户成功登陆lobe-chat,不论用户状态都可以永久使用。
发现这个问题已经被开了很多issue,但似乎并没有引起足够的重视。
最近搭了一个lobe-chat服务器版,使用logto管理用户,供几个朋友一起使用,为了方便,没有关闭注册。然而,发现有人疯狂白嫖,想赶紧关了注册干掉白嫖怪。令人惊奇的是,lobe-chat在第一次注册、登陆之后似乎压根儿就没有鉴权了,logto后台能看到每个用户的交互历史有且仅有第一次使用。也就是说,一旦某个用户成功登陆lobe-chat,不论用户状态都可以永久使用。
发现这个问题已经被开了很多issue,但似乎并没有引起足够的重视。
可以进他们的dc反馈下意见,处理还是挺快的
lobe 自己的数据库也有用户表,这里面把用户删了应该就行
还是用new-api+openwebui吧
正解 直接数据库删掉就行了
lobe-chat这些issue好像说的是Auth0的问题导致的
lobechat用的不多了吧
纳尼,这个密钥不是每个用户独立配置的吗
Auth0 这种认证系统只是作为一个用户管理平台,用于用户的登录认证,登录成功后,lobe-chat 会在自己系统中生成一个对应用户,同时生成 lobe-chat 自己的用户凭证;
当 Auth0 那边处理用户时,lobe-chat 并不知道,只要凭证不过期,用户在 lobe-chat 就一致有效,不受 Auth0 控制
坛里不是有开发者吗?我忘了哪个了,不然帮你艾特一下
服务器版可以配置统一的密钥给所有人用
@Arvin_Xu Sir, this way!
每个不同的 auth provider 有不同的安全策略,比如 clerk 默认的鉴权 token 15s 刷新一次,最长保活 15 天。 auth0 默认不刷新 token ,单个 token 有效期是 10天,而 logto 也是不刷新 token ,默认有效期是 14 天。
现代的产品体验好的 auth 服务就应该是相对长时间的,让用户下一次打开时候就自动就登录。而你遇到的问题大概率是默认有效期时间很长,你都没等到 14 天就迫不及待地过来发帖了。
由于 LobeChat 本身没有做任何鉴权逻辑的实现,因此你觉得我们的鉴权形同虚设,可能更多的是你配置的鉴权策略形同虚设。你把这个 token 有效期改成 1 天,等后天那些用户就自动掉线要重新登陆了。
像我们在 Cloud 版本上用的 Clerk,我们就定向优化了整个的刷新策略和保活时间,进而达到安全性和用户体验的平衡。
而在「开源全自部署」这个特定约束条件下,你必须要接受的一个事实就是目前开源的可用的 auth 方案就是比不上成熟的商业版的 auth 方案。目前我们选择的两家 logto 和 casdoor 已经算是矮子里面拔将军的方案,但它的默认配置并不能完全达到像 clerk 这样极致。
当然你如果追求 auth 体验更加好,也完全可以换成像 Auth0 这样更加完备的商业解决方案,那你就换一个 auth provider 就好了,重新配置即可,还能省下一个 logto 的机器内存开销。
发现这个问题已经被开了很多issue,但似乎并没有引起足够的重视。
至于你说的开了很多 issue 的问题,和你遇到的完全不是同一个问题。issue 中提到的问题是,在某些 provider 下,用户退出登录后直接就重新登陆进去了,也就是用户点了退出以后,没有正常销毁用户的登录态 session。但这个行为是和特定 provider 强相关的,比如 auth0 并没这个问题,casdoor 在不开启 「“会话保持”和“自动登录”」下也没有这个问题。只有部分 provider (比如 logto)会存在这种问题。
这个登出的问题当然有解决方案,是 issue 里有个小伙伴提到的: [Bug] 没办法真正意义上的退出用户登录状态 · Issue #3646 · lobehub/lobe-chat · GitHub ,我也很欢迎对此有强需求的用户来贡献代码。但对于我们团队来说,我们只能有精力确保一种 auth 方式有最好的用户体验,那就是 clerk 。而基于 next-auth 的其他 auth provider ,大部分也都是社区同学来主力维护。
感谢大佬的回复。确实我设置的token有效期是14天。然而,我发现即便是14天过期之后,lobe-chat似乎也不会向logto请求新的token。
我严格遵循了文档配置,使用repo中的docker-compose配置文件搭建: https://lobehub.com/zh/docs/self-hosting/advanced/auth/next-auth/logto
lobe-chat/docker-compose/production/logto at main · lobehub/lobe-chat · GitHub
但即便如此,出现了下面的情况:
在pg表中可以看到用户有登陆/操作记录的情况下,lobe似乎并没有按时重新请求token。
这个问题我过年排查下看看吧,我怀疑可能是 logto 的问题,你换成 auth0 的话应该就不会有这个问题…
@narcissus 佬友换成casdoor试试吧,logto问题太多,我们已经正式废弃了![]()
可惜了,感觉logto的UI是真的好看,属于是和clerk一个水平的,而logto支持自部署
去年这鉴权本地生成的,直接打断点改掉时间戳就生成了永久token ![]()
接下来社区同学是有计划做更完备的鉴权了,大家有兴趣的话也可以看下~
有个问题没搞明白,你关闭了注册和已注册的用户能登录,这个和关闭注册没啥关系吧