之前有 rails 的开发经验,一直惊艳于 devise 这样的用户和登陆体系的开箱即用,现在考虑做一个独立的账号系统,所想到的还是 rails 和 devise。
做了些调研了解到有 keycloak 这样的东西,但是相比之前还是觉得 devise 的灵活性更强,配合 omniauth 或者 doorkeeper 可以有更好的效果。
这里特别好奇的想请教一下大家类似的框架或者独立的服务在别的语言下有类似的东西吗?使用 rails + devise 在今天依然算是一个比较好的实践吗?
我一直不建议用 devise。确实它开箱即用,能快速搭建一个 demo,但是向生产环境迈进的时候就要做大量修改(例如把模版 dump 到项目里修改),修改功能时要了解它非常复杂的内部构造,逐渐修改成本大于自己写的成本。等到发现的时候就已经尾大不掉,只能凑合了。
账号系统是功能核心,一开始就应该自己写。
dump 模板就是自己实现一个界面吧?这个似乎逃不过,我可以接受。至于你说的“修改功能时要了解它非常复杂的内部构造”不知可否举一两个例子呢,谢谢了。
要是想 DIY 的话,middleware 用 warden,加密用 BCrypt,然后自己写几个 strategy 和 controller 就可以了。
其实如果仅仅是这个程度我想也不必非要用 devise,我是更看中其他扩展性,比如和 doorkeeper 集成,再比如 devise 有一些 小生态 都是我觉得近期很可能用到的功能,如 邀请制 再如 双重认证。
其中 devise + doorkeeper + openid-connect 是我实实在在用过的,使用的库是 这个。整体来说并不好用,很多 oidc 的功能当时并没有,学习成本较高,自己需要做一些 tricky 的事情。但是,确实工作,并且总的来说也降低了这部分的研发成本。但是那次项目并不是一个成熟的项目,还是很担心以上同学提到的在真正生产环境还是会遇到问题。
以我有限的开发经验来看,Python 中显然存在用于用户登录的包,但没有 Devise 这么复杂(何况 Python 源码的易读性和可修改性要远大于 Ruby)。