因为书上采用单点登录,单点登录虽然方便,但是一开始测试时要搞域名等反向代理,比较麻烦,所以直接创建登录页面。
和书上例子兼容,我们给电影网站添加一个用户评论者的模型。
rails generate model Moviegoer name:string provider:string uid:string
rake db:migrate
我们不采用单点登录,因此添加一个密码项,也可以添加邮箱email之类的
rails g migration add_column_to_moviegoers password_digest:string
rake db:migrate
has_secure_password 中加密的功能需要用到 bcrypt ,所以需要在项目中启用 bcrypt gem 包。进入项目目录,修改 Gemfile 文件如下内容:
gem 'bcrypt', '~> 3.1.7'
在命令行下运行命令使得gem生效
bundle install
如果rails服务器在运行,记得重启。
修改app/models/moviegoer.rb
class Moviegoer < ApplicationRecord
has_secure_password
end
创建控制器创建用户
rails g controller applicants new create
在路由config/routes.rb中添加/修改以下路由
get 'applicants/new'
post 'applicants/create'
修改app/controllers/applicants_controller.rb
class ApplicantsController < ApplicationController
def new
@moviegoer = Moviegoer.new
end
def create
params.permit!
@moviegoer = Moviegoer.create(params[:moviegoer])
if @moviegoer.save
redirect_to :sessions_new
else
render "new"
end
end
private
def user_params
params.require(:moviegoer).permit(:name, :password, :password_confirmation)
end
end