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