almost 4 years ago

系統:

Mac OS X Yosemite 10.10.1
Ruby 2.1.5
Rails 4.1.8

相關連結

Devise ( https://github.com/plataformatec/devise )

設定步驟如下

1. Gemfile 設定

添加必要的 gem 套件至 Gemfile 檔中

# Use Devise control User
gem 'devise'
bundle install
rails g devise:install

2. 參數設定

在 config/environments/development.rb 和 config/environments/production.rb 中新增以下 code,在 production 中,host 應該設定為你 app 實際的主機名稱。
如果有開啟 :confirmable,以下為使用 gmail 寄信的設定方式。

config/environments/development.rb

config.action_mailer.default_url_options = { host: 'rails-exercise.dev', port: 80 }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
    address: 'smtp.gmail.com',
    port: 587,
    user_name: 'YOUR_EMAIL_ADDRESS',
    password: 'YOUR_EMAIL_PASSWORD',
    authentication: 'plain',
    enable_starttls_auto: true
}

config/environments/production.rb

config.action_mailer.default_url_options = { host: 'andy-rails-exercise.herokuapp.com', port: 80 }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
    address: 'smtp.gmail.com',
    port: 587,
    user_name: 'YOUR_EMAIL_ADDRESS',
    password: 'YOUR_EMAIL_PASSWORD',
    authentication: 'plain',
    enable_starttls_auto: true
}

修改 /config/initializers/devise.rb

config.secret_key = 'can get from <rake secret>'
config.mailer_sender = 'YOUR_EMAIL_ADDRESS'
config.password_length = 4..20

3. 安裝 Model

rails g devise User

如果有開啟 :confirmable,請將 db/migrate/xxx_devise_create_users.rb 中以下的 code 取消註解

...
## Confirmable

t.string   :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
t.string   :unconfirmed_email # Only if using reconfirmable

...
add_index :users, :confirmation_token,   unique: true
rake db:migrate

4. view 相關

如果想要修改 devise 的 views,可以執行以下指令,他會在 app/views/ 中生成 devise 的 views

rails generate devise:views

顯示 devise 的訊息

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

登入登出方法

<% if current_user %>
  <%= link_to('登出', destroy_user_session_path, :method => :delete) %> |
  <%= link_to('修改密碼', edit_registration_path(:user)) %>
<% else %>
  <%= link_to('註冊', new_registration_path(:user)) %> |
  <%= link_to('登入', new_session_path(:user)) %>
<% end %>
← Use jQuery plugin - Timeago Devise - part 2 - Use Omniauthable module →
 
comments powered by Disqus