gpt4 book ai didi

ruby-on-rails - 多个应用程序使用 Authlogic,在一个数据库中对用户进行身份验证?

转载 作者:行者123 更新时间:2023-12-04 17:13:53 24 4
gpt4 key购买 nike

我已经看到在 Google 群组上多次提出这个问题,但似乎没有人跟进答案或解决方案。是否可以使用中央数据库从使用 Authlogic 的多个 Rails 应用程序创建用户和进行身份验证?

我现在不能选择使用 OpenID,我很乐意,但我的客户还不支持它。

最佳答案

似乎仍然没有针对原始问题发布解决方案。

我有一个类似的问题。我有多个 rails 应用程序,我需要能够在所有这些应用程序的事件之间跟踪用户。因此,我希望有一个用于管理用户和跟踪的应用程序,所有其他应用程序都将连接到此用户数据库以进行身份​​验证。

我已经在其他一些项目中使用了 Authlogic,所以我希望它像更改一些配置设置一样简单。

这是我的解决方案:

我创建了主要的用户跟踪应用程序。该应用程序没有什么特别之处。它允许用户注册、登录、注销等。一旦用户登录,他们就可以导航到其他应用程序。

在我的用户应用程序和每个需要与基本应用程序进行身份验证的应用程序的 environment.rb 文件中,您需要将 session key 和域设置为相同。

config.action_controller.session = {
:session_key => '_my_app_session',
:secret => '_long_secret_session_key_here',
:domain => ".basedomain.com"
}

我的每个应用程序都在自己的子域下,例如 app1.basedomain.com app2.basedomain.com
我不确定这是否会在没有更多更改的情况下起作用。

在每个应用程序中,创建 UserSession
class UserSession < Authlogic::Session::Base   
end

和用户模型。
class User < ActiveRecord::Base
establish_connection "users_database"
acts_as_authentic
end

这个 User 模型的不同之处在于它现在具有建立连接的方法。 “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

然后我可以在我的 Controller 中使用“require_user”,就像在我的主用户应用程序中一样,我想要进行身份验证。

希望这可以帮助。

大通 M 格雷

关于ruby-on-rails - 多个应用程序使用 Authlogic,在一个数据库中对用户进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1631586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com