ruby on rails 注册登录模块的简单实现
2016-01-01 18:50
816 查看
本文使用Devise组件生成一个带有登录、注册等基本功能的认证模块。
Ruby版本为 2.2.1
Rails版本为 4.2.3
使用前可以先修改gem sources
言归正传~
1. 新建一个项目,使用mysql数据库
2.修改 Gemfile文件,注意由于rails4自身原因,这里mysql2要进行版本设置,否则一直提示mysql2需要安装。如图所示:
3.
rails g devise:install
4. 修改 config/environments/development.rb 或者production.rb,上边加入:
5. 修改 routes.rb
6.
7.
8. devise默认使用email字段登录,添加username取代email
确认修改
9. 修改 ApplicationController
10. 修改 views/devise/registrations/edit.html.erb 和 new.html.erb,加上:
11. 在views/layouts 新建_user_widget.html.erb
12. views/layouts/application.html.erb 加入
13. config/initializers/devise.rb 修改
14. 修改 app/views/devise/sessions/new.html.erb
完成!
运行效果:
Ruby版本为 2.2.1
Rails版本为 4.2.3
使用前可以先修改gem sources
言归正传~
1. 新建一个项目,使用mysql数据库
rails new demoDevise -d=mysql
2.修改 Gemfile文件,注意由于rails4自身原因,这里mysql2要进行版本设置,否则一直提示mysql2需要安装。如图所示:
bundle install
3.
rails g devise:install
4. 修改 config/environments/development.rb 或者production.rb,上边加入:
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
5. 修改 routes.rb
devise_for :users root :to => "welcome#index"
6.
rails g devise user rake db:migrate
7.
rails g devise:views
8. devise默认使用email字段登录,添加username取代email
rails g migration add_username_to_users加入代码
add_column :users, :username, :string
确认修改
rake db:migrate
9. 修改 ApplicationController
class ApplicationController < ActionController::Base before_action :configure_permitted_parameters, if: :devise_controller? protect_from_forgery with: :exception protected def configure_permitted_parameters devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :userna me, :password, :password_confirmation) } devise_parameter_sanitizer.for(:account_update) << :username end end
10. 修改 views/devise/registrations/edit.html.erb 和 new.html.erb,加上:
<div class="field"> <%= f.label :username %><br /> <%= f.text_field :username %> </div>
11. 在views/layouts 新建_user_widget.html.erb
<% if user_signed_in? %> <p>Welcome <%= current_user.username %></p> <%= link_to '退出', destroy_user_session_path, :method => :delete %> <%= link_to '回到首页', root_path %> <% else %> <p>You are not signed in.</p> <%= link_to 'Login', new_user_session_path %> <% end %>
12. views/layouts/application.html.erb 加入
<body> <p class="notice"><%= notice %></p> <p class="alert"><%= alert %></p> <%= yield %> <%= render 'layouts/user_widget' %> </body>
13. config/initializers/devise.rb 修改
config.authentication_keys = [:username]
14. 修改 app/views/devise/sessions/new.html.erb
<div class="field"> <%= f.label :username %><br /> <%= f.text_field :username, autofocus: true %> </div> <div class="field"> <%= f.label :password %><br /> <%= f.password_field :password, autocomplete: "off" %> </div>
完成!
运行效果:
相关文章推荐
- 红宝石(Ruby)史话
- Ruby简明教程之循环语句介绍
- ruby 一些简单的例子
- Ruby 之 class 中的 private、 protected、public
- Ruby中操作文件的方法介绍
- Ruby中的集合编写指南
- CentOS 6.3下编译安装Ruby 2.0笔记
- Ruby基本的环境变量设置以及常用解释器命令介绍
- Ruby编程中关于中断和返回的用法教程
- Ruby中的异常处理代码编写示例
- Ruby中的变量学习总结
- 几个加速Ruby on Rails的编程技巧
- Ruby配置rspec和RestClient来检测服务器
- 分析Cache 在 Ruby China 里面的应用情况
- Ruby中数组的一些相关使用方法
- Ruby on Rails中jquery_ujs组件拖慢速度的问题解决
- 编写Ruby代码注释时需要注意的一些问题
- Ruby类继承、抽象类、类拓展混入、代理类实例
- 错误报告:ffi requires Ruby version >= 1.9.