2011-12-21 81 views
6

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

我无法弄清楚如何摆脱或改变一些路线。例如,如果用户访问/ 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 

当我运行耙路线我没有看到user_omniauth_authorize_path这我相信是因为正在由色器件产生的任何路线路线。所以我想我需要让我的路线指向一个设计控制器,但我似乎无法找到正确的路径。

+2

您需要更改devise/sessions/new.html.erb以显示登录表单。如果你删除了'database_authenticatable',你将最终在你的应用中没有会话路由,这在某种程度上令人沮丧。顺便说一句,我只是:'devise_for:users,:controllers => {:omniauth_callbacks =>“users/omniauth_callbacks”}'在我的** routes.rb **文件中。以及** User.rb **模型文件中的'devise:database_authenticatable,:omniauthable,:recoverable,:rememberable,:trackable,:validatable'。此外,您需要相应地创建一个** Users :: OmniauthCallbacksController **。让我知道你是否需要代码帮助? – Surya 2012-10-29 12:11:46

回答

相关问题