Auth是web开发逃不开的话题,可能也是前端开发最容易接触到的最复杂的业务逻辑,Auth要说简单你可以就做个账号密码保存数据库,但要说复杂能说的话题就多了。最近在撸自己的新网站,想着一步到位接个完善的Auth解决方案,然后就感觉走入了一条不归路。
市面上常见的Auth解决方案我分为两种:
- 收费的,有免费额度但很少,数据保存在第三方
- 开源的,自己部署自己服务接入自己数据库
其实用收费的有非常多的缺点,最显而易见的是你每次session校验都要请求他的API,这延迟比访问自己数据库那可是差了远了,花钱降性能这件事,个人不是很认可。
所以我主要研究的是开源的方案,我已经接了两个:
- SuperTokens
- NextAuth
第一个是业界新星,YC创投投资的公司
他需要部署一个独立的SuperTokens core服务来管理session,然后提供各种SDK来集成到你自己的服务上。这解耦了核心的逻辑部分和不同架构的服务,让不同的架构接入变得简单。但是我考虑的点在于:
- 我要部署一个独立的服务,这要钱
- 他的core是java开发的,我不会
第二个是NextAuth,最近发布了@authc/core,不再单独支持Nextjs,希望做跨框架。我在看到这条消息之后是立马搞起来的,准备直接在我的Nestjs服务里面集成,结果:
- 他是ESM,在nestjs里面集成有一大堆问题
- 他bug很多,最基本的TS都有问题
- 社区反应非常慢,提了一个discuss和一个PR一周了没什么反应
后面想想,我需要的其实只是接入github的oauth,这些Auth解决方案的其他功能我都用不到(当然有是更好的,因为不保证你以后不需要)。整这么麻烦一通,增加了成本,带来了出bug的可能,还只用了一点点功能实在有点不值得。
还是自己做算了。哈哈。