我用 ab
测试用了和没用 Devise
的结果,感觉没多大区别呀?
Devise 的问题来自它用了比较高层次的抽象技巧去解决注册登录问题,之所以用这么高层次的抽象技巧是因为作者比较牛,是 Rails 的 Core Team Member 之一。如果你要去改造或者定制 Devise,如果你的编码抽象能力达不到作者的那个水平,就会感受到痛苦。
存储或检查密码的瓶颈在 bcrypt, 因为 bcrypt 的 feature 就是慢,快就不安全了... 非密码请求的一大瓶颈在 session 的验证和签名,慢在 OpenSSL 和 Rack 里
devise 管得太宽 (last_login_at 这些东西其实让专门的用户行为追踪去做更好) 从前到后入侵太严重 (为啥要做一套模板?还要载入我不需要的模板引擎,和我不需要的 i18n 数据) 处理过程太黑箱,调用栈过深,定制只能通读 devise 源码并且复制修改 devise 源码,你还得熟悉 warden, 定制完了要升级 devise 自然兼容很有问题
我觉得最适合 devise 和 warden 的场景是只有搭 demo
rails 本来就是大而全的东西,devise 的做法相当 rails way. rails 同样自带 erb 模板引擎和 i18n 数据。
要达到所谓的“容易定制”很简单,像其他 gem 一样选择不做一些事情就行。结果什么都自己写,自然好定制。
无意说哪种更好,只想说 rails 和 sinatra 各有自己的场景。
如果有 gem 和 devise 能力大致相同,却比 devise 容易定制,相信社区会用脚投票。