Rails中的使用者验证:Devise

Rails中的使用者验证:Devise
概要:Devise是Ruby On Rails的一个三方权限认证组件,通过它可以无需编码快速生成一个带有登陆,注册.权限认证和重置密码的认证模块.
安装:
1.新建一个rails项目

# rails new ks

2.在Gemfile中添加

# gem 'devise'

3.输入bundle install 安装此套件

# bundle install

4.输入rails g devise:install生成devise相关文件

# rails g devise:install

5.编辑config/environments/development.rb 和 production.rb 加入寄信时预设的网络地址:

# config.action_mailer.default_url_options = { :host => 'localhost:3000' }

6.确认app/views/layouts/application.html.erb layout 中可以显示 flash 訊息,例如:

 # <p class="notice"><%= notice %></p>
 # <p class="alert"><%= alert %></p>

7.新建一个controller

# rails g controller home index
  1. 编辑routes设置默认首页
# root 'home#index'

9.执行rails g devise User
该命令会产生:

1.在app/models文件夹下产生了一个user.rb,也就是创建了一个user model
2.在db/migrate文件夹下产生了一个migrate文件
3.在config/routes.rb文件中添加了一行 devise_for :users

10.配置user —编辑app/models/user.rb文件

11.输入rails g devise:views 产生模板,这会生成包括注册/登入/忘记密码/Email等页面,放在app/views/devise目录下面

12.输入rake db:migrate建立数据表

13.在home_controller中加上

# before_action :authenticate_user!

14.可以在Layout中加上登入,登出选项

<% if current_user %>
          <%= link_to('登出', destroy_user_session_path, :method => :delete) %> |
          <%= link_to('修改密碼', edit_registration_path(:user)) %>
      <% else %>
          <%= link_to('註冊', new_registration_path(:user)) %> |
          <%= link_to('登入', new_session_path(:user)) %>
      <% end %>

15.Devise预设不会产生first_name,last_name等属性,我们可以向users表中添加username属性

# rails g migration add_username_to_users

在生成的表中加入:

# add_column :users, :username, :string

执行rake db:migrate

16.编辑application_controller.rb加上configure_permitted_parameters方法:

class ApplicationController < ActionController::Base
    before_action :configure_permitted_parameters, if: :devise_controller?
    # ...
    protected
    def configure_permitted_parameters
      devise_parameter_sanitizer.for(:sign_up) << :username
      devise_parameter_sanitizer.for(:account_update) << :username
    end
  end

17.编辑views/devise/registrations/edit.html.erb和views/devise/registrations/new.html.erb加上username字段

<div class="field">
    <%= f.label :username %><br />
    <%= f.text_field :username, autofocus: true %>
  </div>

18.如果使用qq邮箱进行测试,请在邮箱设置里面开启smtp服务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值