devise安装使用指南

时间:2022-07-20 05:20:18

1.安装Devise

首先在gemfile中加上

gem 'devise'

在命令行中运行

bundle install

在项目中添加devise

rails generate devise:install

如果在用户验证功能里需要用到邮件验证,则需要把下面的代码加到config/environments/development.rb 和 production.rb中

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

另外在app/views/layouts/application.html.erb里可以加上下面的代码,用于显示登录过程中的各种警告信息

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

最后,还需要在路由文件添加root action并且添加view,这个root action就是登录成功后跳转的页面,比如可以这样添加

root 'welcome#index'

2.添加modle和view

devise作为权限管理包,用于权限管理,那么首先需要有一个用户模型来存储用户

rails g devise user //生成devise的user模型
rake db:migrate //数据迁移

添加权限管理相关的登录注册等页面

rails generate devise:views

通过在页面中添加这些代码可以添加登陆注册的入口

<h1>Log In</h1>
<% if user_signed_in? %>
hello, <%= current_user.username %>! You are <%= current_user.role %>
<%= link_to('登出', destroy_user_session_path, :method => :delete) %>
<% else %>
<%= link_to('注册', new_registration_path(:user)) %>
<%= link_to('登录', new_session_path(:user)) %>
<% end %>

点击连接会进入对应的页面中
devise会默认创建一个帮助方法:

before_action :authenticate_user!
user_signed_in? //判断用户是否登录
current_user //获取当前登录用户
user_session //可以访问对应的session

在controller中添加before_action :authenticate_user!会让相应的页面进行权限控制未登录的状态下会自动进入登录页面,登陆后默认跳转回root页面

其他配置

  • 为了让用户在登录后跳转回刚才打开的页面,需要覆盖after_sign_in_path_for和after_sign_out_path_for来自定义跳转回调

  • 修改错误提示:Devise处理错误信息的方式是把所有需要的信息都用i18n的方式保存在config/local目录下的/config/locales/devise.en.yml 文件中,直接修改成中文就行

  • 在页面模板(layout)中显示当前用户的名称: 在application中添加before_action :set_user,在private方法下定义set_user
private

def set_spuser
if current_spuser
@spuser = Spuser.find(current_spuser)
end
end