rails使用devise做登录验证

使用devise这个gem只需要简单几步就能做好用户注册登录等功能,能节省大量时间和精力。

1. 安装devise
# 编辑Gemfile加入以下内容
gem 'devise'
#安装gem
bundle install
#初始化devise
rails g devise:install
#初始化model为user
rails g devise user
#初始化视图
rails g devise:views
# 创建数据库
rake db:migrate

2. 使用
# 创建一个空的controller
rails g controller home index --no-helper --no-assets
# 编辑config/routes.rb将home index设为首页
root 'home#index'
# 编辑app/views/home/index.html.erb加入以下内容

<h1>Home#index</h1>
<% if user_signed_in? %>
  hello, <%= current_user.username %><br />
  <%= link_to('登出', destroy_user_session_path, :method => :delete) %>
<% else %>
  <%= link_to('注册', new_registration_path(:user)) %>
  <%= link_to('登录', new_session_path(:user)) %>
<% end %>

此时访问http://localhost:3000就可以使用注册登录功能了。
另附两个有用到的链接:
1. 添加用户名登录 How To: Allow users to sign in using their username or email address
2. 添加管理员角色 How To: Add an Admin Role