gpt4 book ai didi

ruby-on-rails - 设计 + 子域 - 重定向用户以进行登录

转载 作者:行者123 更新时间:2023-12-04 07:41:14 25 4
gpt4 key购买 nike

我在具有多个子域的 rails 应用程序中使用设计 gem。每个子域由各自的 Controller 处理,如下所示:

class Subdomain1Controller < ApplicationController
before_filter :authenticate_user!
def index
end
end

通过上述 Controller 实现,Devise 在将用户重定向到登录页面时始终保留子域。在上述情况下,设计将用户重定向到 http://subdomain1.acmesite/users/sign_in而不是常见的 sign_in Url。

这导致每个子域有多个 sign_in url。
http://subdomain1.acmesite/users/sign_in
http://subdomain2.acmesite/users/sign_in
http://subdomain3.acmesite/users/sign_in

我想知道是否可以覆盖设计方法以从 url 中排除子域部分,同时保留上一页的 url 信息。更重要的是,我希望 Devise 将用户重定向到特定的 Url(如: http://acmesite/users/sign_in )而不管子域如何,并且在成功验证后,Devise 应该将用户返回到调用者子域+页面。

最佳答案

您需要编写一个自定义的FailureApp,它会在用户未经身份验证时启动。

来自 How To: Redirect to a specific page when the user can not be authenticated

class CustomFailure < Devise::FailureApp
def redirect_url
#return super unless [:worker, :employer, :user].include?(scope) #make it specific to a scope
new_user_session_url(:subdomain => 'secure')
end

# You need to override respond to eliminate recall
def respond
if http_auth?
http_auth
else
redirect
end
end
end

并在 config/initializers/devise.rb 中添加以下内容:
config.warden do |manager|
manager.failure_app = CustomFailure
end

如果您收到未初始化的常量 CustomFailure 错误,并且您已将 CustomFailure 类放在/lib 目录下,请确保在 application.rb 文件中自动加载 lib 文件,如下所示
config.autoload_paths += %W(#{config.root}/lib)

关于ruby-on-rails - 设计 + 子域 - 重定向用户以进行登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8570815/

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