企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 第 6 章 用户模型 [第 5 章](chapter5.html#filling-in-the-layout)末尾创建了一个临时的用户注册页面([5.4 节](chapter5.html#user-signup-a-first-step))。本书接下来的五章会逐步在这个页面中添加功能。本章我们要迈出关键的一步,创建网站中用户的数据模型,并实现存储数据的方式。[第 7 章](chapter7.html#sign-up)会实现用户注册功能,并创建用户资料页面。用户能注册后,我们要实现登录和退出功能([第 8 章](chapter8.html#log-in-log-out))。[第 9 章](chapter9.html#updating-showing-and-deleting-users)([9.2.1 节](chapter9.html#requiring-logged-in-users))会介绍如何保护页面,禁止无权限的用户访问。最后,在[第 10 章](chapter10.html#account-activation-and-password-reset)实现账户激活(从而确认电子邮件地址有效)和密码重设功能。第 6 章到第 10 章的内容结合在一起,为 Rails 应用开发一个功能完整的登录和认证系统。或许你知道已经有很多开发好的 Rails 认证方案,[旁注 6.1](#aside-roll-your-own)解释了为什么,至少在初学阶段,最好自己动手实现。 ##### 旁注 6.1:自己开发认证系统 基本上所有 Web 应用都需要某种登录和认证系统。为此,大多数 Web 框架都提供了多种实现方式,Rails 也不例外。为 Rails 开发的认证和权限系统有 [Clearance](http://github.com/thoughtbot/clearance)、[Authlogic](http://github.com/binarylogic/authlogic)、[Devise](http://github.com/plataformatec/devise) 和 [CanCan](http://railscasts.com/episodes/192-authorization-with-cancan)。除此之外,还有一些不是 Rails 专用的方案,基于 [OpenID](http://en.wikipedia.org/wiki/OpenID) 和 [OAuth](http://en.wikipedia.org/wiki/Oauth) 实现。所以你肯定会问,为什么我们要重复制造轮子,为什么不直接使用现成的方案,而要自己开发呢? 首先,实践已经证明,大多数网站的认证系统都要对第三方代码库做一些定制和修改,这往往比重新开发一个工作量还大。再者,现成的方案就像一个“黑盒”,你无法了解其中到底有些什么功能,而自己开发的话能更好地理解实现的过程。而且,Rails 最近的更新(参见 [6.3 节](#adding-a-secure-password)),让开发认证系统变得很简单。最后,如果以后要用第三方系统的话,因为自己开发过,所以能更好地理解实现过程,便于定制功能。