rails - 使用devise登陆

发表于:,更新于:,By Sally
大纲
  1. 1. 在我们的项目中,需要后台管理员创建用户,然后该用户只有登陆的功能。
  2. 2. devise
    1. 2.1. 基本用法

在我们的项目中,需要后台管理员创建用户,然后该用户只有登陆的功能。

  • 假设company是原有的一个模型,现在它需要登陆功能
1
rails generate devise COMPANY
  • 这时,如果没有配置路由,那么在创建company时,是走的devise/create方法,而devise并没有我们自己声明的某些属性。(而且存在一些概率事件:有时可以创建成功,但是字段不全;有时根本创建不成功,不查看log不知道问题出在哪里)

    1
    2
    3
    4
    5
    6
    7
    8
    9
      // 这里不使用devise的方法,使用定制的new
    devise_for :companies, :controller => {:new => "company/registrations"}
    // scaffold生成的new,create,update就不能用了,要创建,就需要重新定义routes
    resources :companies do
    collection do
    post :create_company
    put :update_company
    end
    end

  • 没有定制视图,登陆的界面,还在app/views/devise/sessions/new.html.erb

  • 登陆动作,也是使用devise的

devise

devise github

基本用法

  • 添加gem
1
gem 'devise'
  • 运行 bundle install 安装

  • 安装完,初始化一下

1
rails generate devise:install
  • 生成模型 : 模型可以是已有模型,也可以是创建一个新模型
1
rails generate devise MODEL
  • 生成视图,以便定制
1
2
rails generate devise:views users
rails genearte devise:views -V registrations confirmations
  • 定制congroller
1
reail generate devise:controllers [scope]
1
2
3
4
rails generate devise:controllers [users]

class Users::SessionsController < Devise::SessionController
end
  • 声明定制controller的路由
1
devise_for :users, controllers: {sessions: "users/sessions"}
  • 等等其他具体的操作,看github。