gpt4 book ai didi

ruby-on-rails-4 - Devise + Omniauth,路由版本控制

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

我有一个模型候选,可以设计为全能(linkedin)。

到目前为止,我的routes.rb看起来像这样:

namespace :v1 do
devise_for :candidates, only: :omniauth_callbacks
...
end

一切正常,直到我不得不添加一个新版本:
namespace :v2 do
devise_for :candidates, only: :omniauth_callbacks
...
end

namespace :v1 do
devise_for :candidates, only: :omniauth_callbacks
...
end

使用当前配置,我得到此错误:
`set_omniauth_path_prefix!': Wrong OmniAuth configuration. If you are getting this exception, it means that either: (RuntimeError)
1) You are manually setting OmniAuth.config.path_prefix and it doesn't match the Devise one
2) You are setting :omniauthable in more than one model
3) You changed your Devise routes/OmniAuth setting and haven't restarted your server

这有点烦人,因为我希望能够在两个版本上对候选人进行身份验证。

我能做些什么 ?

最佳答案

好了,让我们在这里回顾一下, Devise不允许您在config/routes.rb文件中定义的devise_forscope路由内调用 namespace方法,对吗?

我的命名空间路由如下所示:

namespace :api, constraints: { format: :json } do
devise_for :users, skip: [ :registrations, :passwords, :confirmations ]
resources :profiles, only: :show
end

而且有效!

我做了什么使它起作用?答案就在 config/initializers/devise.rb文件中。
查看文件底部显示的内容...
# When using omniauth, Devise cannot automatically set Omniauth path,
# so you need to do it manually. For the users scope, it would be:

下一 strip 注释的行显示了一个示例, 取消注释该行,并根据您的需要(即我上面的命名空间路由)根据您的需要对其进行修改:
config.omniauth_path_prefix = "/api/users/auth"

就是这样! ....我做到了,一切开始正常运行!

希望能帮助到你!

关于ruby-on-rails-4 - Devise + Omniauth,路由版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24574094/

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