原创作者: hideto   阅读:849次   评论:0条   更新时间:2011-05-26    
使用ruby-openid这个gem和open_id_authentication插件做OpenID认证
sudo gem install ruby-openid
ruby script\plugin install open_id_authentication
rake open_id_authentication:db:create


# routes.rb
map.open_id_complete 'session', :controller => "session", :action => "create", :requirements => { :method => :get }


# session_controller.rb
class SessionController < ApplicationController
  def create
    if using_open_id?
      open_id_authentication(params[:openid_url])
    else
      password_authentication(params[:login], params[:password])
    end
  end
protected

  def open_id_authentication(openid_url)
    authenticate_with_open_id(openid_url, :required => [:nickname, :email]) do |result, identity_url, registration|
      if result.successful?
        @user = User.find_or_initialize_by_identity_url(identity_url)
        if @user.new_record?
          @user.login = registration['nickname']
          @user.email = registration['email']
          @user.save(false)
        end
        self.current_user = @user
        successful_login
      else
        failed_login result.message
      end
    end
  end
end
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

文章信息

Global site tag (gtag.js) - Google Analytics