deviseを利用した認証について@Minamirb
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

deviseを利用した認証について@Minamirb

on

  • 6,268 views

minami.rbにて発表した認証についての資料

minami.rbにて発表した認証についての資料

Statistics

Views

Total Views
6,268
Views on SlideShare
6,257
Embed Views
11

Actions

Likes
9
Downloads
13
Comments
0

2 Embeds 11

http://s.deeeki.com 6
https://www.chatwork.com 5

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

deviseを利用した認証について@Minamirb Presentation Transcript

  • 1. 認証Authentication
  • 2. 自己紹介● 名前:フカヤ ジュン● twitter: @fukajun● Rails, B Shell, C#, Androidが好き● Railsは、ポツポツ1年前くらいから● SenchaTouch、jQueryMobile勉強中● 仕事:PHP、PostgreSQL● 音楽:Ben Foldsが大好き● 服:jhon bull private laboが好き● 入門で作ってみた:http://sankiseiki.jp/
  • 3. 認証ってなに?ある事が正しいということを確認すること
  • 4. 例えば?● 情報を見たり、変更したりできるかどうか?● 貯金を引き出すことができるか?● 金庫の扉を開けることができるか?● Webメールを利用することができるか?
  • 5. どうやって確認する?● 情報を見たり、変更したりできるかどうか? →パスワード● 貯金を引き出すことができるか? →カードと暗証番号● 金庫の扉を開けることができるか? →暗証番号● Webメールを利用することができるか? →メールアドレスとパスワード
  • 6. つまり● それをできる人しか知りえない情報を知っている、 持っているか? 保険証 カード 暗証番号 パスワード
  • 7. WEBサイトで代表的ものは? やっぱりログイン ↓ パスワード ID(E-Mail)とパスワード
  • 8. パスワードのみの場合● パスワード(URLなど)のみ ● ○ 簡単にログインできる ● ○ ユーザーの登録とかなくてめんどくさくない ● × だれが使ってたのかわからないよね ● × パスワードが漏れると大変&めんどくさい 例) パスワード(キー)が含まれているURL ● https://docs.google.com/document/d/1Wjtw5UwPDsLZIn0D eUhwWpLMbO3x1CecV3k76pQeENs/edit? hl=ja&authkey=CM7dhqcO
  • 9. IDとパスワードの場合● ○ 誰が 使っているのか識別できる。● ○ パスワードが、漏れてもその人だけ変更すれば よい。● ○ ユーザー毎に好きなパスワードを設定すること ができる。● × ユーザーの登録とかめんど クサイ ヨネ(82)
  • 10. パスワードデータの持ち方● 登録する時(サインアップ) ● 照合する時(ログイン) ● 暗号化して保存 ● 入力したパスワード hogehoge hogehoge ↓ ↓ $2a$10$6p19TYH.GZLZP $2a$10$6p19TYH.GZLZP teUya6hfePo6BFgTBPTA teUya6hfePo6BFgTBPTA DXZzT8aIjrNoEtGR4h3y DXZzT8aIjrNoEtGR4h3y 照合 DBにはいっているパスワードは暗号化され ているのでパスワードが漏れても大丈夫 →元のパスワードは、わからない。
  • 11. Rails3でログイン! Deviseプラグインでログイン機能を追加してみよう
  • 12. devsie とは?● Railsで作ったアプリケーションに簡単に認証機能 を追加できるプラグイン。  ● また他のプラグインとTwitterやFacebookなどと連 携するためのOAuth認証、OpenID認証などの機 能を追加で組み込むことができる。 →Omniauthプラグイン
  • 13. deviseを使って機能を追加 ログイン・ログアウト機能を追加 ユーザー登録機能を追加
  • 14. minamirbistをダウンロードminamirbistを題材に行うのでgit clone $ git clone https://github.com/Minamirb/minamirbist.git4月6日時点まで戻す(hogeは適当なブランチ名にしてね) $ cd minamirbist $ git checkout -b hoge 5f777c3
  • 15. インストール(1)● Gemfilesを編集 gem devise, 1.1.5● お決まりのコマンド(Gemsをインストール) $ bundle install
  • 16. インストール(2)● Deviseの機能をインストール $ rails generate devise:install● ログイン後の遷移先(たぶんもう設定済) config/routes.rbに下記を追加 root :to => "welcome#index"
  • 17. インストール(3)● ログイン成功、ログイン失敗などのメッセージなどを 表示される。● app/views/layouts/application.html.erb <p class="notice"><%= notice %></p> <p class="alert"><%= alert %></p>
  • 18. ユーザーModelを作成● Userモデルを作成(ログインするユーザーの情報) $ rails generate devise user ● config/routes.rb →devise_for :user の記述が追加される。 ● db/migrate/20110422184000_devise_create_u sers.rb ● app/model/user.rb
  • 19. user.rbについて● :dateabase_authenticatable ID、PasswordなどをDBに登録して管理● :registerable アカウントを登録、変更できるようにする。● :recoverable パスワードを忘れた場合にメールで送ってくれる。● :rememberable 次回以降自動でログイン機能を追加● :trackable ログイン履歴を記録する● :validatable ユーザー登録の再に、メールアドレス、パスワードのチェックを行うか?
  • 20. インストール(5)● DBにUsersテーブルを作成! $ rake db:migrate
  • 21.  ● 確認してみよう $ rake routes● 試しにログイン画面を表示してみる localhost:3000/users/sign_in →ログイン画面が表示される!
  • 22. ログイン、ログアウトのリンクを設定● もう一度確認 $ rake routes● ログインへのパス new_user_session_path● ログアウトへのパス destroy_user_session_path
  • 23. ログイン、ログアウトのリンクを設定  ● 現在ログイン中のユーザー次のメソッドで取得できるの で(ログインしてないとnil) current_user● app/views/layouts/application.html.erb <% unless current_user %> <li><%= link_to "log_in", new_user_session_path, :class => :itemsub %></li> <% else %> <li><%= link_to "log_out", destroy_user_session_path, :class=> :itemsub %></li> <% end %>
  • 24. アクセス制限するJK「ていうーか、memberも、eventも勝手に追加されたくなしぃー」 ↓ controllerにフィルターを追加して 一部のactionは、ログイン済のとき表示する
  • 25. フィルターとは?● コントローラーの各アクションを実行する「前」、「後」、そして「前後」に行う 処理を指定するしくみ● before_filter :メソッド名 ● アクションの実行前に呼び出すメソッドを指定する。 ● アクションを実行しないこともできる。 他のアクション へリダイレクト● after_filter :メソッド名 before_filter ● アクション実行後に呼び出すメソッドを指定する。 ● クライアントに返すレスポンスデータを加工できる。 action A action B● arround_filter : acitionの前後● skip_...: 指定したフィルタ処理を行わない after_filter● prepend_...:優先度の高いフィルタを定義
  • 26. アクセス設定● event_controller, members_controllerでログイ ン前にアクセスできるactionを制限してみる。● app/controller/members_controller.rb before_filter :authenticate_user! →ログイン済かどうかを判断、ログインしてなかったら、ログイ ン画面に、飛びます。 →new_user_sessions_pathへリダイレクトされます。
  • 27.  JK「メンバーリストまで表示できなく なってしまったわ!、CDM」 ↓フィルタを通さないactionを指定する。
  • 28.  ● 一部のみフィルター処理の対象外にする。 :except => [:index, :show]● 逆に、一部のみフィルターをかけることもできる。 例えば :only => [:new, :create, :edit, :update......]
  • 29. ● app/controller/members_controller.rb class MembersController < ApplicationController before_filter :authenticate_user!, :except => [:index, :show]● app/controller/members_controller.rb ● class EventsController < ApplicationController ● before_filter :authenticate_user!, :except => [:index, :show]
  • 30. ログイン後のリダイレクト先を設定● deviseは、ログイン後次のようにリダイレクト する。 ● user_rootが設定されている→user_root ● user_rootが設定されてない→root● config/routes.rb get :members, :to => "members#index", :as => "user_root"
  • 31. ひとまずこれで終了
  • 32. 残作業new member, new eventへのリンクもログイン後の● み表示できるようにしてみよう!
  • 33. 残作業● 管理者ユーザーログインを作るつもりだったけど、 サインアップ機能が残ったままになってしまった。 ● config/routes.rbを変更すればアクセスできなくできる devise_for :user, :skip => :registrations ● ↑じゃー管理者用のユーザー用のデータはどうやってい れるの?