2010-11-05 1 views
1

Я собираюсь внедрить аутентификацию пользователя RESTful в каталоге LDAP в моем приложении Rails, используя net-ldap. Я уже проверял, что это работает, но где вы помещаете это в приложение Rails? Это что-то вроде помощника? В моем UsersController?Где вы устанавливаете аутентификацию внешнего каталога в приложении Ruby on Rails?

Вот пример некоторого кода аутентификации:

require 'rubygems' 
require 'net/ldap' 

ldap = Net::LDAP.new 
ldap.encryption :simple_tls 
ldap.host = 'directory.company.com' 
ldap.port = 636 
ldap.auth 'uid=human,ou=people,o=mycompany', 'turboSecret' 

if ldap.bind 
    puts 'win!' 
else 
    puts 'fail :(' 
end 

ответ

1

Я положил это в app/controllers/sessions_controller.rb.

sessions_controller.rb

class SessionsController < ApplicationController 

    # Authenticate user against their LDAP directory 
    # user and directory correspond to models in my app 
    # password is a string 
    # For complete source, see http://github.com/sidewaysmilk/auther 
    def directory_login(user, password) 

    directory = user.directory 

    return nil if !directory 

    directory.bind_dn['%s'] = user.login 

    ldap = Net::LDAP.new 
    ldap.host = directory.host 
    ldap.port = directory.port 
    ldap.encryption :simple_tls if directory.use_simple_tls? 
    ldap.auth directory.bind_dn, password 
    if ldap.bind 
     return user 
    end 
    end 

end 
+0

Я бы отречься это. Эта логика должна быть нажата, по крайней мере, в модель и, возможно, даже в отдельную библиотеку, которую вызывает модель. –