gpt4 book ai didi

ruby-on-rails - Rails 设计和 devise_token_auth。不一起工作

转载 作者:行者123 更新时间:2023-12-04 03:05:55 26 4
gpt4 key购买 nike

我有一个与 Devise 一起运行的 Rails 4.1 应用程序以进行身份​​验证。

对于通过移动应用程序访问,我想使用推荐的 devise_token_auth gem 实现 token 身份验证。我不使用 Omniauth

不应更改现有应用程序的功能。

我做了什么:

通过 gemfile 安装了 devise_token_auth。

使用生成器: rails g devise_token_auth:install User auth

更改了迁移以添加必填字段。
由于缺少 Omniauth,迁移失败。所以我也安装了。

更改路线.rb

devise_for :users, :skip => [:sessions, :registrations, :omniauth_callbacks]
as :user do
get 'register' => 'users/registrations#new', :as => :new_user_registration
post 'register' => 'users/registrations#create', :as => :user_registration
get 'sign_in' => 'devise/sessions#new', :as => :new_user_session
post 'sign_in' => 'devise/sessions#create', :as => :user_session
delete '/' => 'users/sessions#destroy', :as => :destroy_user_session
end

添加:
namespace :api do
scope :v1 do
mount_devise_token_auth_for 'User', at: 'auth', skip: [:omniauth_callbacks]
end

结尾

在用户模型中,我有:
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:confirmable, :timeoutable, :lockable
include DeviseTokenAuth::Concerns::User

现在,当我尝试注册一个新用户时,它给了我验证错误:

uid不能为空

有人遇到同样的问题并解决了吗?

我觉得奇怪的是它需要安装 Omniauth。

更新:

我覆盖了设计注册 Controller 创建操作:
build_resource(sign_up_params)
resource.uid = resource.email
resource.provider = ''

现在,当我登录时,我得到:

{"errors":["仅限授权用户。"]}

在浏览器中。

最佳答案

将以下内容添加到 app/models/user.rb:

before_validation do
self.uid = email if uid.blank?
end

为我做的。还要确保提供者设置为“提供者”的“电子邮件”。

关于ruby-on-rails - Rails 设计和 devise_token_auth。不一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28945079/

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