Ich habe ein Projekt auf Heroku bereitgestellt und erhalte derzeit einen "TypeError (keine implizite Umwandlung von Nil in String)" in meinen Heroku-Logs, wenn ich es versuche und Anmeldung.TypeError (keine implizite Konvertierung von Nil in String) beim Anmelden bei Heroku
Es funktioniert gut lokal, so bin ich mir nicht sicher, was schief läuft.
2017-05-22T09:28:53.701881+00:00 app[web.1]: I, [2017-05-22T09:28:53.701785 #4] INFO -- : [9748b196-6755-447a-a783-
03e1d4636790] Completed 500 Internal Server Error in 76ms (ActiveRecord: 1.0ms)
2017-05-22T09:28:53.624924+00:00 app[web.1]: I, [2017-05-22T09:28:53.624813 #4] INFO -- : [9748b196-6755-447a-a783-03e1d4636790] Started POST "/login" for 81.154.127.158 at 2017-05-22 09:28:53 +0000
2017-05-22T09:28:53.702530+00:00 app[web.1]: F, [2017-05-22T09:28:53.702491 #4] FATAL -- : [9748b196-6755-447a-a783-03e1d4636790]
2017-05-22T09:28:53.702586+00:00 app[web.1]: F, [2017-05-22T09:28:53.702545 #4] FATAL -- : [9748b196-6755-447a-a783-03e1d4636790] lib/auth.rb:8:in `issue'
2017-05-22T09:28:53.702441+00:00 app[web.1]: F, [2017-05-22T09:28:53.702368 #4] FATAL -- : [9748b196-6755-447a-a783-03e1d4636790]
2017-05-22T09:28:53.702489+00:00 app[web.1]: F, [2017-05-22T09:28:53.702444 #4] FATAL -- : [9748b196-6755-447a-a783-03e1d4636790] TypeError (no implicit conversion of nil into String):
2017-05-22T09:28:53.702587+00:00 app[web.1]: [9748b196-6755-447a-a783-03e1d4636790] app/controllers/authentications_controller.rb:16:in `login'
Ich denke, es sagt etwas falsch in meinem entweder auth.rb oder meine Auth-Controller wird, aber kann nicht sehen, wo.
lib/auth.rb:
def self.issue(payload, expiry_in_minutes=60*24*30)
payload[:exp] = expiry_in_minutes.minutes.from_now.to_i
JWT.encode(payload, auth_secret, ALGORITHM)
end
authentications_controller.rb:
def login
user = User.find_by_email(params[:email])
if user && user.authenticate(params[:password])
token = Auth.issue({ id: user.id })
render json: { token: token, user: UserSerializer.new(user) }, status: :ok
else
render json: { errors: ["Invalid login credentials."] }, status: 401
end
end
Sie einen Blick auf die volle Repo haben HERE, wenn nötig.
Jede Hilfe würde massiv geschätzt werden!
Ich denke nicht, 'Nutzlast [: exp] = expiry_in_minutes.minutes.from_now.to_i' Diese Linie wird Arbeit, dies kann Sie einen anderen Fehler werfen sagen 'undefined Methode' Minuten 'für Fixnum' – Sravan
sollten Sie nicht 'Daten' in der Nutzlast ?, vielleicht anstelle von' id: user.id' was Sie brauchen, ist 'Daten : user.id'. Da bin ich mir nicht sicher, ich habe JWT Juwel noch nie benutzt. – fanta
Ich habe es genau so geschrieben und es hat absolut funktioniert, also bin ich mir nicht sicher, warum es diesmal nicht funktioniert. Es funktioniert, wenn ich es auf localhost ausführe, erst nachdem ich es auf Heroku bereitgestellt habe, hat es diesen Fehler. Ich habe andere Beiträge gelesen, die nahelegen, dass es mit der Gem-Datei zu tun sein könnte, aber ich habe das ebenfalls aktualisiert und funktioniert immer noch nicht. –