• ブログ
  • ふぉとす
  • キーワード
  • ブックマーク
  • 写真
  • ログイン

Title

« 爽やかな一日 | ブログにどんな価値があるのだろう »
  • Acts as Authenticatedを使ってみた 2007-08-15 00:00:00

     Acts as Authenticatedを使ってみました。Railsに認証機能を備えることができるpluginです。今まではLoginEngineとかLoginGeneraterとかいろいろあったと思うけど、Acts as Authenticatedはシンプルで使いやすくて簡単。

    1.インストール

    script/plugin install http://svn.techno-weenie.net/projects/plugins/acts_as_authenticated
    


    2.コントローラ、ビュー、モデル、テーブルの作成

    script/generate authenticated user account
    rake db:migrate
    


    基本的にはこれだけです。めちゃ簡単。/account/signupにアクセスすれば、サインアップ画面が表示されると思います。文章は適宜日本語に変えましょう。
    さらに、よくあるようなメールを使ったサインアップもできます。

    3.メール関係のモデル等を作成

    script/generate authenticated_mailer user
    


    4.observerの設定。
     Acts as Authenticatedではobserverでuserテーブルを監視していて、createのときにそれをフックしてメールを送信するような仕組みになっているようです。
     ただしObserverメソッドはRails2.0でなくなってしまうようなので、かわりにconfig/environment.rbのRails::Initializer.runブロック内に以下の文を追加しましょう。

    Rails::Initializer.run do |config|
      config.active_record.observers = :user_observer
    end
    


    5.userモデルへのカラム追加
     migrationを使用して、usersテーブルに以下のふたつのカラムを追加します。

    add_column :users, :activation_code, :string, :limit => 40
    add_column :users, :activated_at, :datetime
    

    rake db:migrateを忘れずに。

    6.userモデルの修正
     Userモデルに以下の修正を実施します。

      class User < ActiveRecord::Base
        before_create :make_activation_code
    
        # Authenticates a user by their login name and unencrypted password.  Returns the user or nil.
        def self.authenticate(login, password)
          # hide records with a nil activated_at
          u = find :first, :conditions => ['login = ? and activated_at IS NOT NULL', login]
          u && u.authenticated?(password) ? u : nil
        end
    
        # Activates the user in the database.
        def activate
          @activated = true
          update_attributes(:activated_at => Time.now, :activation_code => nil)
        end
    
        # Returns true if the user has just been activated.
        def recently_activated?
          @activated
        end
    
        protected
        # If you're going to use activation, uncomment this too
        def make_activation_code
          self.activation_code = Digest::SHA1.hexdigest( Time.now.to_s.split(//).sort_by {rand}.join )
        end
      end
    


    7.コントローラの修正
     account_controllerの修正です。

    def activate
      @user = User.find_by_activation_code(params[:id])
      if @user and @user.activate
        self.current_user = @user
        redirect_back_or_default(:controller => '/account', :action => 'index')
        flash[:notice] = "Your account has been activated." 
      end
    end
    


     これで完了。ためしてみてください。とても簡単だなあ。

    Commentコメント(0) Pageリンク元(225) Append 205
  • しゅごキャラ! (1) (講談社コミックスなかよし (1113巻))
    メディア: コミック
    目薬αで殺菌します (講談社ノベルス モF- 43)
    メディア: 新書
« 爽やかな一日 | ブログにどんな価値があるのだろう »

プロフィール

おおいしつかさ

Amazon商品の一覧

人気の記事ベスト10

  • 1.apache+mod_proxy_balancer+mongrelでRailsを動かす方法
  • 2.Perlでevalを使ってみる
  • 3.バージョン管理をsubversionからgitに移行してみた
  • 4.tokyobikeのドロップハンドル化
  • 5.ubuntu8.04でデュアルディスプレイを使う
  • 6.restful_authenticationを使ってみた
  • 7.URLなど、長い英字を折り返して表示する方法
  • 8.Rspecでコントローラのspecファイルを書く
  • 9.RailsとPostfixで受信メールを処理する方法
  • 10.フラグメントキャッシュをRailsで使う。

コメント

  • ユル(プログラマが若隠居をしたら)
  • ユル(風邪ひいた)
  • ユル(バイクがへたくそになっていた)
  • おおいしつかさ(便利になって不便になる)
  • 武石(便利になって不便になる)
  • ユル(劇場版 天元突破グレンラガン)
  • ユル(フラニーとゾーイー (新潮文庫): サリンジャー, 野崎 孝: 本)

過去の記事

2006年
12月
2007年
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2008年
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月

キーワード一覧

ActionScript AmazonResources git javascript kaeruspoon milook NSR Objective-C Rails Ruby Ruby on Rails subversion Thin tokyobike ubuntu VAIO VAIO typeZ Waves Xen ぐりぐり カンタロー スノボー ドトール ドライブ バイク プログラミング ユルさん 執筆 日本酒 模型 真中洋嗣 自転車

Youtube

ニコニコ動画