我构建了一个应用程序,允许用户使用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的任何路由,我认为是因为该路由是由设计生成的。所以我认为我需要让我的路线指向一个设计控制器,但我似乎无法找到正确的路径。
答案 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。