rails組件_devise_用戶系統(tǒng)

ruby環(huán)境

?  ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin15]
?  rails -v
Rails 5.0.2

先建立一個rails項(xiàng)目

rails new blog

在Gemfile里添加

gem 'devise'

然后運(yùn)行

bundle install

安裝好了devise的gem包以后, 安裝devise相關(guān)組件

?  blog/ rails generate devise:install
Running via Spring preloader in process 38288
      create  config/initializers/devise.rb
      create  config/locales/devise.en.yml

還有按照提示去配置

Some setup you must do manually if you haven't yet:

  1. Ensure you have defined default url options in your environments files. Here
     is an example of default_url_options appropriate for a development environment
     in config/environments/development.rb:

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

     In production, :host should be set to the actual host of your application.

  2. Ensure you have defined root_url to *something* in your config/routes.rb.
     For example:

       root to: "home#index"

  3. Ensure you have flash messages in app/views/layouts/application.html.erb.
     For example:

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

  4. You can copy Devise views (for customization) to your app by running:

       rails g devise:views

/config/environments/development.rb 添加

  # devise setting
  config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

/config/routes.rb 添加

  root to: "home#index"

/app/views/layout/application.html.erb 添加

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

輸入命令rails g devise:views 會生成devise的視圖文件

?  blog rails g devise:views
Running via Spring preloader in process 38720
Expected boolean default value for '--markerb'; got :erb (string)
      invoke  Devise::Generators::SharedViewsGenerator
      create    app/views/devise/shared
      create    app/views/devise/shared/_links.html.erb
      invoke  form_for
      create    app/views/devise/confirmations
      create    app/views/devise/confirmations/new.html.erb
      create    app/views/devise/passwords
      create    app/views/devise/passwords/edit.html.erb
      create    app/views/devise/passwords/new.html.erb
      create    app/views/devise/registrations
      create    app/views/devise/registrations/edit.html.erb
      create    app/views/devise/registrations/new.html.erb
      create    app/views/devise/sessions
      create    app/views/devise/sessions/new.html.erb
      create    app/views/devise/unlocks
      create    app/views/devise/unlocks/new.html.erb
      invoke  erb
      create    app/views/devise/mailer
      create    app/views/devise/mailer/confirmation_instructions.html.erb
      create    app/views/devise/mailer/password_change.html.erb
      create    app/views/devise/mailer/reset_password_instructions.html.erb
      create    app/views/devise/mailer/unlock_instructions.html.erb

輸入命令rails g devise user 生成需要用到devise的模型, 路由中會自動生成一個devise_for :users

?  blog rails g devise user
Running via Spring preloader in process 38828
      invoke  active_record
      create    db/migrate/20170424093829_devise_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/models/user_test.rb
      create      test/fixtures/users.yml
      insert    app/models/user.rb
       route  devise_for :users

輸入命令rake db:migrate 執(zhí)行遷移文件

?  blog rake db:migrate
== 20170424093829 DeviseCreateUsers: migrating ================================
-- create_table(:users)
   -> 0.0014s
-- add_index(:users, :email, {:unique=>true})
   -> 0.0007s
-- add_index(:users, :reset_password_token, {:unique=>true})
   -> 0.0006s
== 20170424093829 DeviseCreateUsers: migrated (0.0029s) =======================

輸入命令rails generate controller home index 用來設(shè)置root頁面

?  blog rails generate controller home index
Running via Spring preloader in process 39045
      create  app/controllers/home_controller.rb
       route  get 'home/index'
      invoke  erb
      create    app/views/home
      create    app/views/home/index.html.erb
      invoke  test_unit
      create    test/controllers/home_controller_test.rb
      invoke  helper
      create    app/helpers/home_helper.rb
      invoke    test_unit
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/home.coffee
      invoke    scss
      create      app/assets/stylesheets/home.scss

在控制器中, 設(shè)置訪問之前需要登錄

class HomeController < ApplicationController
  before_action :authenticate_user!, :only => [:index, :new]
  def index
  end
end

解釋一下:
user_signed_in? //判斷用戶是否登錄
current_user //獲取當(dāng)前登錄用戶
user_session //可以訪問對應(yīng)的session

現(xiàn)在可以跑一下rails s 來看看效果
訪問默認(rèn)頁 http://127.0.0.1:3000/ 會被路由到 http://127.0.0.1:3000/users/sign_in

你將看到以下簡陋的頁面, 實(shí)現(xiàn)了最簡單的用戶系統(tǒng).
注冊頁(users/sign_up),
登入頁(users/sign_in),
忘記密碼頁(users/password/new)

登錄之后, devise默認(rèn)跳轉(zhuǎn)到了root, 要自定義, 去覆蓋after_sign_in_path_forafter_sign_out_path_for來自定義跳轉(zhuǎn)回調(diào)

待續(xù)寫

Reference

http://www.reibang.com/p/8dfff067197d

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末岁诉,一起剝皮案震驚了整個濱河市撮执,隨后出現(xiàn)的幾起案子酌泰,更是在濱河造成了極大的恐慌桥言,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钩杰,死亡現(xiàn)場離奇詭異隧哮,居然都是意外死亡幽勒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門焊虏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來淡喜,“玉大人,你說我怎么就攤上這事诵闭×锻牛” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵疏尿,是天一觀的道長瘟芝。 經(jīng)常有香客問我,道長褥琐,這世上最難降的妖魔是什么模狭? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮踩衩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贩汉。我一直安慰自己驱富,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布匹舞。 她就那樣靜靜地躺著褐鸥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赐稽。 梳的紋絲不亂的頭發(fā)上叫榕,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機(jī)與錄音姊舵,去河邊找鬼晰绎。 笑死,一個胖子當(dāng)著我的面吹牛括丁,可吹牛的內(nèi)容都是我干的荞下。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼史飞,長吁一口氣:“原來是場噩夢啊……” “哼尖昏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起构资,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤抽诉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后吐绵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體迹淌,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡河绽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了巍沙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葵姥。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖句携,靈堂內(nèi)的尸體忽然破棺而出榔幸,到底是詐尸還是另有隱情,我是刑警寧澤矮嫉,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布削咆,位于F島的核電站,受9級特大地震影響蠢笋,放射性物質(zhì)發(fā)生泄漏拨齐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一昨寞、第九天 我趴在偏房一處隱蔽的房頂上張望瞻惋。 院中可真熱鬧,春花似錦援岩、人聲如沸歼狼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽羽峰。三九已至,卻和暖如春添瓷,著一層夾襖步出監(jiān)牢的瞬間梅屉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工鳞贷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坯汤,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓搀愧,卻偏偏與公主長得像玫霎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子妈橄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.Environment Variables [finish] 2.Ruby Version Managers ...
    Jayzen閱讀 1,254評論 0 1
  • rails new movie_review git initgit add .git commit -am"In...
    棟棟曉閱讀 508評論 1 1
  • 基本使用在Gemfile里面添加gem 'devise'運(yùn)行bundle install然后安裝devise相關(guān)組...
    youngiyang_打碼少年閱讀 6,231評論 2 11
  • devise是一個很好的用戶登錄gem庶近。但還是想自己寫個“輪子”,一則本來就是在學(xué)習(xí)rails眷蚓,二則是了解了用戶登...
    kamionayuki閱讀 6,254評論 2 9
  • 如果沒有九群里各位老師的擾動鼻种,我就不會開始寫分享。現(xiàn)代人好像都在觀望沙热,大道理誰都懂叉钥,就是不行動罢缸。我也在擾動著家人和...
    悠揚(yáng)小徑閱讀 94評論 0 0