gpt4 book ai didi

ruby-on-rails - 在访问 Omniauth 路由之前验证 Devise 用户

转载 作者:太空宇宙 更新时间:2023-11-03 16:59:17 25 4
gpt4 key购买 nike

我正在开发一个应用程序,它使用 devise 来记录我的用户记录,并使用 omniauth 来记录用户拥有的记录,而不是使用典型的 omniauth + devise 来记录用户记录。我正在尝试将 devise 的用户身份验证添加到 omniauth 路由 /auth/:provider 以便未注册的访问者无法访问这些路由并触发特定提供商的身份验证过程。

我已经能够通过在我的 session Controller 中使用 devise 的 authenticate_user! 辅助方法向回调添加身份验证,所以我至少可以阻止未注册的访问者创建记录来自 omniauth 流程,但我想让设计的用户身份验证在 omniauth 流程的所有阶段工作。

关于如何将 devise 的用户身份验证添加到初始 omniauth 路由的任何想法,无论是使用类似于我当前解决方案的东西,还是通过我的 routes.rb 文件使用 devise 的 authenticate :user do

最佳答案

对于遇到同样问题的任何人的解决方案:

在request_phase做Devise认证。如果您使用的是策略 gem,例如 omniauth-facebook,您可以在初始化程序中修改该特定策略,例如,在 config/initializers/omniauth.rb 中:

module FacebookExtension
include Devise::Controllers::Helpers
def request_phase
# it might be 'admin_user_signed_in?' depends on what your user model is
if user_signed_in?
super
else
# redirect to any path you think is suitable once devise authentication fail
redirect Rails.application.routes.url_helpers.new_admin_user_session_path
end
end
end
OmniAuth::Strategies::Facebook.prepend FacebookExtension

关于ruby-on-rails - 在访问 Omniauth 路由之前验证 Devise 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27001388/

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