Spree API 身份验证扩展不工作
Spree API Authentication extension not working
我正在开发一个扩展程序以通过 Spree 对用户进行身份验证 API。我搜索了很多,但几乎没有关于这个主题的信息,而且我发现的几个扩展也不起作用。
我根据找到的扩展创建了一个扩展,但出现以下错误:
AbstractController::ActionNotFound(无法为 Spree::UsersController 找到操作 'sign_in')
module Spree
module Api
#class UsersController < Spree::Api::V1::UsersController
Spree::Api::V1::UsersController.class_eval do
before_action :authenticate_user, :except => [:sign_up, :sign_in]
def sign_up
@user = Spree::User.find_by_email(params[:user][:email])
if @user.present?
render "spree/api/users/user_exists", :status => 401 and return
end
@user = Spree::User.new(user_params)
if !@user.save
unauthorized
return
end
@user.generate_spree_api_key!
end
def sign_in
puts("hola controller")
@user = Spree::User.find_by_email(params[:user][:email])
if !@user.present? || !@user.valid_password?(params[:user][:password])
unauthorized
return
end
@user.generate_spree_api_key! if @user.spree_api_key.blank?
end
def user_params
params.require(:user).permit(:email, :password, :password_confirmation)
end
#end
end
end
end
我的routes.rb
Spree::Core::Engine.add_routes do
# Add your extension routes here
namespace :api, defaults: {format: 'json'} do
resource :users do
#resource :v1 do
member do
#post :sign_up
post :sign_in
end
#end
end
end
end
你能帮我弄清楚我错过了什么吗?
谢谢
您需要在 config/routes.rb
中的 v1 命名空间中添加路由:
namespace :api do
namespace :v1 do
resource :users do
member do
post :sign_in
end
end
end
end
我正在开发一个扩展程序以通过 Spree 对用户进行身份验证 API。我搜索了很多,但几乎没有关于这个主题的信息,而且我发现的几个扩展也不起作用。
我根据找到的扩展创建了一个扩展,但出现以下错误:
AbstractController::ActionNotFound(无法为 Spree::UsersController 找到操作 'sign_in')
module Spree
module Api
#class UsersController < Spree::Api::V1::UsersController
Spree::Api::V1::UsersController.class_eval do
before_action :authenticate_user, :except => [:sign_up, :sign_in]
def sign_up
@user = Spree::User.find_by_email(params[:user][:email])
if @user.present?
render "spree/api/users/user_exists", :status => 401 and return
end
@user = Spree::User.new(user_params)
if !@user.save
unauthorized
return
end
@user.generate_spree_api_key!
end
def sign_in
puts("hola controller")
@user = Spree::User.find_by_email(params[:user][:email])
if !@user.present? || !@user.valid_password?(params[:user][:password])
unauthorized
return
end
@user.generate_spree_api_key! if @user.spree_api_key.blank?
end
def user_params
params.require(:user).permit(:email, :password, :password_confirmation)
end
#end
end
end
end
我的routes.rb
Spree::Core::Engine.add_routes do
# Add your extension routes here
namespace :api, defaults: {format: 'json'} do
resource :users do
#resource :v1 do
member do
#post :sign_up
post :sign_in
end
#end
end
end
end
你能帮我弄清楚我错过了什么吗?
谢谢
您需要在 config/routes.rb
中的 v1 命名空间中添加路由:
namespace :api do
namespace :v1 do
resource :users do
member do
post :sign_in
end
end
end
end