Я внедряю API аутентификации на основе токенов в своем коде, следуя шагам по ссылке ниже:
https://www.pluralsight.com/guides/token-based-authentication-with-ruby-on-rails-5-api
authentication_controller.rb is:
class AuthenticationController < ApplicationController
skip_before_action :authenticate_request
skip_before_action :verify_authenticity_token
def authenticate
binding.pry
command = AuthenticateStudent.call(params[:corporative_email], params[:password])
if command.success?
render json: { auth_token: command.result }
else
render json: { error: command.errors }, status: :unauthorized
end
end
end
authenticate_student.rb - это:
class AuthenticateStudent
prepend SimpleCommand
def initialize(corporative_email, password)
binding.pry
@corporative_email = corporative_email
@password = password
end
def call
binding.pry
JsonWebToken.encode(student_id: student.id) if student
end
private
attr_accessor :corporative_email, :password
def student
binding.pry
student = Student.find_by_corporative_email(corporative_email)
return student if student && student.authenticate(password)
errors.add :student_authentication, 'invalid credentials'
nil
end
end
Все идет хорошо до последней попытки, когда код прерывается на student.authenticate(password)
и сервер возвращает «ArgumentError (неправильное количество аргументов (задано 0, ожидается 1)):». На консоли «пароль» возвращает «123456», как и ожидалось, что означает для меня, что данный номер аргумента не должен равняться нулю.
Кто-нибудь знает, что здесь происходит?