# 第 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)),让开发认证系统变得很简单。最后,如果以后要用第三方系统的话,因为自己开发过,所以能更好地理解实现过程,便于定制功能。
- Ruby on Rails 教程
- 致中国读者
- 序
- 致谢
- 作者译者简介
- 版权和代码授权协议
- 第 1 章 从零开始,完成一次部署
- 1.1 简介
- 1.2 搭建环境
- 1.3 第一个应用
- 1.4 使用 Git 做版本控制
- 1.5 部署
- 1.6 小结
- 1.7 练习
- 第 2 章 玩具应用
- 2.1 规划应用
- 2.2 用户资源
- 2.3 微博资源
- 2.4 小结
- 2.5 练习
- 第 3 章 基本静态的页面
- 3.1 创建演示应用
- 3.2 静态页面
- 3.3 开始测试
- 3.4 有点动态内容的页面
- 3.5 小结
- 3.6 练习
- 3.7 高级测试技术
- 第 4 章 Rails 背后的 Ruby
- 4.1 导言
- 4.2 字符串和方法
- 4.3 其他数据类型
- 4.4 Ruby 类
- 4.5 小结
- 4.6 练习
- 第 5 章 完善布局
- 5.1 添加一些结构
- 5.2 Sass 和 Asset Pipeline
- 5.3 布局中的链接
- 5.4 用户注册:第一步
- 5.5 小结
- 5.6 练习
- 第 6 章 用户模型
- 6.1 用户模型
- 6.2 用户数据验证
- 6.3 添加安全密码
- 6.4 小结
- 6.5 练习
- 第 7 章 注册
- 7.1 显示用户的信息
- 7.2 注册表单
- 7.3 注册失败
- 7.4 注册成功
- 7.5 专业部署方案
- 7.6 小结
- 7.7 练习
- 第 8 章 登录和退出
- 8.1 会话
- 8.2 登录
- 8.3 退出
- 8.4 记住我
- 8.5 小结
- 8.6 练习
- 第 9 章 更新,显示和删除用户
- 9.1 更新用户
- 9.2 权限系统
- 9.3 列出所有用户
- 9.4 删除用户
- 9.5 小结
- 9.6 练习
- 第 10 章 账户激活和密码重设
- 10.1 账户激活
- 10.2 密码重设
- 10.3 在生产环境中发送邮件
- 10.4 小结
- 10.5 练习
- 10.6 证明超时失效的比较算式
- 第 11 章 用户的微博
- 11.1 微博模型
- 11.2 显示微博
- 11.3 微博相关的操作
- 11.4 微博中的图片
- 11.5 小结
- 11.6 练习
- 第 12 章 关注用户
- 12.1 “关系”模型
- 12.2 关注用户的网页界面
- 12.3 动态流
- 12.4 小结
- 12.5 练习