[仅在使用omniauth进行身份验证时在devise中配置路由

问题描述 投票:6回答:1

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

我不知道如何摆脱或改变某些路线。例如,如果用户访问/ sign_in,则他们将获得数据库身份验证。如果用户访问sign_up,则会将他们带到一个页面进行注册。我希望访问/ sign_in的用户被带到/ users / auth / ldap的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 

当我运行耙式路由时,我看不到任何user_omniauth_authorize_path的路由,我认为这是因为该路由是由devise生成的。因此,我认为我需要将路线指向设计控制器,但似乎找不到正确的路径。

ruby-on-rails ruby-on-rails-3 devise routes omniauth
1个回答
11
投票

尝试添加

:skip => [:sessions, :registrations] to your routes.rb

类似这样的东西:

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

[This How To article可能有帮助,这里也是one more link to go through

© www.soinside.com 2019 - 2024. All rights reserved.