仅使用omniauth进行身份验证时,在设计中配置路由

时间:2011-12-21 21:55:26

标签: ruby-on-rails ruby-on-rails-3 devise routes omniauth

我构建了一个应用程序,允许用户使用omniauth-ldap对Active Directory进行身份验证。如果这是新用户,则成功的身份验证将根据从AD返回的信息为其创建用户。如果用户已存在,则只会将其登录。用户不会注册该应用程序,只需使用AD凭据登录即可。我从不希望用户使用数据库凭据登录。

我无法弄清楚如何摆脱或改变一些路线。例如,如果用户访问/ sign_in,他们将获得数据库身份验证。如果用户访问sign_up,他们将被带到页面注册该站点。我希望访问/ sign_in的用户进入LDAP登录,即/ users / auth / ldap。我想我需要制作一个自定义路线,但我不确定我需要哪个控制器来引导用户。我想让sign_up页面完全消失。

现在我有一个允许用户使用ldap登录的链接,其路径是user_omniauth_authorize_path(:ldap)。我只是不确定如何将其转换为我的config / routes.rb文件理解的内容。这就是我现在的路线。

   devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }  do  
      get 'sign_in', :to => 'devise/sessions#new', :as => :new_user_session
      get 'sign_out', :to => 'devise/sessions#destroy', :as => :destroy_user_session
  end 

当我运行rake路由时,我没有看到user_omniauth_authorize_path的任何路由,我认为是因为该路由是由设计生成的。所以我认为我需要让我的路线指向一个设计控制器,但我似乎无法找到正确的路径。

1 个答案:

答案 0 :(得分:11)

尝试添加

:skip => [:sessions, :registrations] to your routes.rb
像这样的Smth:

devise_for :users, :skip => [:sessions, :registrations]

This How To may be helpful以及here is one more link to go through