#ruby-on-rails #ruby-on-rails-4 #devise #ruby-on-rails-5
Вопрос:
Я использую API Rails и разрабатываю для аутентификации, но при отправке запроса на уничтожение сеанса он не возвращает никакого ответа, кроме статуса 200.Он возвращает один и тот же ответ независимо от того, существует ли пользователь, вошел в систему или неверный пароль.
URL-адрес http://localhost:3000/users/sign_in
Я отправляю запрос на удаление через Почтальона, и он просто возвращает 200 ответов. Он должен возвращать данные, которые хранятся в @message
{
"user":{
"email":"abc@abc.com",
"password":"abc@abc.com"
}
}
Я даже пытался отменить сеанс, используя идентификатор сеанса:
curl -X DELETE -d "3" http://localhost:3000/users/sign_out
sessions_controller.rb
class API::V1::SessionsController < Devise::SessionsController
def create
@user = User.find_by_email(user_params[:email])
if @user amp;amp; @user.valid_password?(user_params[:password])
session[:user_id]=@user.id
sign_in :user, @user
render json: @user
elsif @user amp;amp; not(@user.valid_password?(user_params[:password]))
invalid_attempt
else
no_user
end
end
def destroy
@message = "signed out"
session.delete(:user_id)
sign_out(@user)
render json: @message
end
private
def no_user
render json: {error: "An account with this email doesn't exist. Please create a new one"}, status: :unprocessable_entity
end
def invalid_attempt
render json: { error: "Your password isn't correct" }, status: :unprocessable_entity
end
def user_params
params.require(:user).permit(:email, :password)
end
end
маршруты.rb
devise_for :users, controllers: { registrations: 'api/v1/registrations', sessions:'api/v1/sessions'}