OpenID Authentication

关键字: Rails OpenID
使用ruby-openid这个gem和open_id_authentication插件做OpenID认证
ruby代码
  1. sudo gem install ruby-openid  
  2. ruby script\plugin install open_id_authentication  
  3. rake open_id_authentication:db:create  
ruby代码
  1. # routes.rb  
  2. map.open_id_complete 'session', :controller => "session", :action => "create", :requirements => { :method => :get }  
ruby代码
  1. # session_controller.rb  
  2. class SessionController < ApplicationController  
  3.   def create  
  4.     if using_open_id?  
  5.       open_id_authentication(params[:openid_url])  
  6.     else  
  7.       password_authentication(params[:login], params[:password])  
  8.     end  
  9.   end  
  10. protected  
  11.   
  12.   def open_id_authentication(openid_url)  
  13.     authenticate_with_open_id(openid_url, :required => [:nickname, :email]) do |result, identity_url, registration|  
  14.       if result.successful?  
  15.         @user = User.find_or_initialize_by_identity_url(identity_url)  
  16.         if @user.new_record?  
  17.           @user.login = registration['nickname']  
  18.           @user.email = registration['email']  
  19.           @user.save(false)  
  20.         end  
  21.         self.current_user = @user  
  22.         successful_login  
  23.       else  
  24.         failed_login result.message  
  25.       end  
  26.     end  
  27.   end  
  28. end  
posted @ 2009-07-10 14:29  麦飞  阅读(375)  评论(0编辑  收藏  举报