注册与登录

rails 中的gem devise提供了注册与登录的功能,用起来比较方便。但是为了自身编程能力,决定学习如何自写出注册与登录功能。

注册功能

用户注册即创建一个用户,这时会用到我们所熟知的CRUD。理解起来很容易,但是做起来并没有那么简单。

首先需要生成user的model,并对其字段进行约束,通常情况下,会是name与email,例如name与email都不为空、长度、格式,为邮箱加索引等,把这些设置好之后,需要设置路由,控制器,还有视图。

Model

约束字段。例如name与email的长度、格式、不为空,密码长度等,且为邮箱加索引。

routes.rb

设置注册路由,一般会是get '/signup', to: 'users#new' post '/signup', to: 'users#create'

Views

设置注册表单。其中会用到form_for或者 simple_form_for

Controllers

编写users#newusers#create

验证用户

验证用户会用密码,因为我们会为user增加一个字段名称password_digest,在user的model中,添加has_secure_password这个方法(因为has_secure_password这个方法调用唯一要求就是对应的model中有password_digest 字段),它有三个作用: (1) 在数据库层中的password_digest中存储安全的密码哈希值(2)获得一对虚拟属性,password password_confirmation,而且创建对象时会执行存在性验证和匹配验证(3)获得authenticate方法,如果密码正确,返回用户对象,如果密码错误,返回false。 要想生成不可逆的密码哈希值,我们需要用到gem 'bcrypt',它的作用就是生成哈希密码值。这样即使‘脱库’,用户的真实密码也不会丢失。