Rails:使用其他登录Enki blogging gem

时间:2012-01-07 18:49:42

标签: ruby-on-rails authentication

我正在尝试使用Rails建立一个博客,并且非常喜欢Enki www.Enkiblog.com。但是,我对它与Open Id一起使用的身份验证系统感到有点困惑。在开发时,它允许您绕过身份验证,但对于生产,它似乎要求您使用OpenId服务器 enter image description here

我希望将更简单的身份验证系统与它结合使用,但不知道这是否更简单(我是菜鸟)或者是否最好试图找出如何设置OpenId服务器(这需要更多安装)

我确实看过一个名为Masquerade的Open Id服务器,但它让我很困惑。我不确定这是否是我尝试与Enki合并的东西(如Rails引擎)或者它是一个完全独立的应用程序。

我是否有任何想法可以简化身份验证,或者如何简化身份验证以便菜鸟可以使用它?

这是在Enki

中设置OpenId身份验证的enki.yml文件
   # Configuration options for your blog - customise to taste
    # This file contains no secret information, so can be stored in source control (unlike database.yml)
    title: My Enki Blog
    url:   http://enkiblog.com
    author:
      name:    Don Alias        # For copyright notice and ATOM feeds
      email:   don@enkiblog.com # Exception emails will go here, and it is used in ATOM feeds
      open_id:                  # These are used to login to the admin area
          - http://enkiblog.com
          - http://secondaryopenid.com

    # Delete the following section if your site will not be acting as an OpenID delegate (http://wiki.openid.net/Delegation)
    # If you're deploying with mongrel, make sure you read http://rhnh.net/2008/04/13/nginx-openid-delegation-and-yadis
    open_id_delegation:
      server:   http://www.myopenid.com/server
      delegate: http://username.myopenid.com

这是执行该身份验证的管理员/会话控制器的创建操作

def create
    return successful_login if allow_login_bypass? && params[:bypass_login]

    if params[:openid_url].blank? && !request.env[Rack::OpenID::RESPONSE]
      flash.now[:error] = "You must provide an OpenID URL"
      render :action => 'new'
    else
      authenticate_with_open_id(params[:openid_url]) do |result, identity_url|
        if result.successful?
          if enki_config.author_open_ids.include?(URI.parse(identity_url))
            return successful_login
          else
            flash.now[:error] = "You are not authorized"
          end
        else
          flash.now[:error] = result.message
        end
        render :action => 'new'
      end
    end
  end

2 个答案:

答案 0 :(得分:0)

您需要的只是google(您的个人资料网址)或openid.net的任何开放ID提供商的公开ID。找到您的开放ID网址后,您需要做的就是打开 config / enki.yml 并将open-id值更改为您的开放ID网址。 e.g:

open_id:                  # These are used to login to the admin area
    - https://plus.google.com/102381073183096542549

现在要在管理面板上登录,只需输入您的个人资料网址即可。它可能会要求您登录您的开放ID提供商的网站,如google.com,然后要求获取 yourblog.com 的权限。获得授权后,您将拥有管理员权限。由于您已将其限制为enki.yml中的open_id,因此没有其他人可以访问管理区域

答案 1 :(得分:-1)

你可以通过黑客攻击代码从Enki中删除OpenID身份验证。我设法做到这一点(Rails新手)所以它并不是那么困难。

唯一的问题是,现在你可以自己更新Enki代码......从我记忆中,为实现这一目标,必须做出很多改变。