Несколько использований приложений Authlogic, аутентифицируя пользователей в одной базе данных?

Числа выстраиваются в линию лучше, если Вы добавляете, что продвижение - обнуляет к числам типом стиля списка установки к:

ol { list-style-type: decimal-leading-zero; }

5
задан revgum 27 October 2009 в 15:48
поделиться

5 ответов

Похоже, что до сих пор не было отправлено решение по исходному вопросу.

У меня была похожая проблема. У меня было несколько rails-приложений, и мне нужно было отслеживать активность пользователей во всех из них. Итак, я хотел иметь одно приложение для управления пользователями и отслеживания, и все другие приложения подключались бы к этой базе данных пользователей для аутентификации.

Я уже использовал Authlogic для некоторых других проектов, поэтому я надеялся, что это будет так же просто, как изменить некоторые параметры конфигурации.

Вот мое решение:

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

В средах. Я не уверен, сработает ли это иначе без каких-либо дополнительных изменений.

В каждом приложении создайте UserSession

class UserSession < Authlogic::Session::Base   
end

и User модели.

class User < ActiveRecord::Base
   establish_connection "users_database"
   acts_as_authentic 
end

Эта модель пользователя отличается тем, что теперь в ней есть метод установки соединения. «users_database» находится в файле database.yml и указывает на базу данных для центрального приложения управления пользователями.

Я не заходил так далеко, чтобы входить и выходить из всех моих суб-приложений, но если вы это сделали вам также придется создать UserSessionsController.

В каждом приложении, использующем аутентификацию, я включил некоторые вспомогательные методы в ApplicationController, например,

   def current_user_session
      return @current_user_session if defined?(@current_user_session)
      @current_user_session = UserSession.find
   end

   def current_user
      return @current_user if defined?(@current_user)
      @current_user = current_user_session && current_user_session.record
   end

   def require_user
     unless current_user
       store_location
       redirect_to 'http://main_user_login_page'
       return false
     end
   end

Затем я могу использовать 'require_user' в своих контроллерах, где мне нужна только аутентификация как я могу в своем основном пользовательском приложении.

Надеюсь, это поможет.

Чейз М. Грей

8
ответ дан 13 December 2019 в 19:30
поделиться

С точки зрения дизайна, иметь вы думали о создании системы, предназначенной для обработки пользовательской информации и аутентификации. Затем попросите другие ваши приложения подключиться к этой системе через безопасный API, скорее всего, внутренний. Вы можете разделить свои базы данных и обеспечить безопасность базы данных пользователей, разрешив доступ только через API.

2
ответ дан 13 December 2019 в 19:30
поделиться

Короткий ответ - «Да». Конечно. Совместное использование модели пользователя между приложениями принципиально не отличается от совместного использования другого типа модели между приложениями. Черт возьми, вы потенциально могли бы даже вытащить свои пользовательские данные через REST с ActiveResource, если бы вы не возражали, что это будет немного медленным.

Но если Authlogic и подобные решения не являются ограничением для бизнеса, есть и другие способы обработки SSO (единого входа) помимо OpenID. Взгляните на RubyCAS , Castronaut (возможно, с Casablanca для клиента) или для совершенно другого подхода, Hancock .

1
ответ дан 13 December 2019 в 19:30
поделиться

Я думаю, что лучший способ для вас - реализовать систему OpenID .
Это позволит вашим пользователям аутентифицироваться не только в ваших приложениях, но практически в любом месте, используя свои логин и пароль.

0
ответ дан 13 December 2019 в 19:30
поделиться

Лично мне не нравится OpenID, люди склонны думать, что он немного безопаснее, чем он есть.

Что касается вашего вопроса, я не вижу причин, по которым вы можете Не делайте этого, вам придется уделить особое внимание безопасности (например, пользователь может войти только в приложение / домен, в котором ему разрешено).

Единственная проблема, которую я вижу, это то, что вы не можете поделиться только одна таблица между приложениями, по умолчанию вам придется использовать ту же базу данных для всех ваших приложений , нет-нет.

Но есть способ указать модель на другую базу данных, я бы порекомендовал драгоценный камень [текст ссылки] [1]. хотя он предназначен для совершенно другого использования, вы должны иметь возможность использовать его, чтобы указать каждому из ваших приложений на конкретную, другую базу данных для вашей пользовательской модели.

[1]: http: // github.

0
ответ дан 13 December 2019 в 19:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: