2017-10-19 5 views
0

Ich versuche, das Passwort eines Benutzers zu ändern, mit Devise Token Auth gem. Aber es gibt Parameter, die ich nicht kenne, wenn es gut ist, da ich sie aus der Datenbank entziffere. Insbesondere aus der Tokens-Spalte meiner Benutzertabelle.Wie ändert man das Passwort über die API mit Devise Token Auth? Rails 5

Das ist mein Wunsch mit ihren jeweiligen Header, je nachdem, was die Dokumentation sagt mir:

PUT /auth/password HTTP/1.1 
Host: localhost 
Content-Type: application/json;charset=utf-8 
token-type: Bearer 
access-token: $2a$10$d6b2GP5N3WT4/fR62S1VL.kiLx9w0YA6Rb5aVYQtXMBPImLx9ix2i 
client: -Z2_wBWzH1GHiAjCAaHAKA 
expiry: 1509654584 
uid: [email protected] 

password=123456789&password_confirmation=123456789 

Dies ist das Zeichen Spalte meiner Benutzertabelle, die mit der E-Mail-[email protected] meinem Benutzer entspricht:

{ 
    "oJ7t-1kXUFsde9J_euKuZA":{ 
     "token":"$2a$10$cYAP0ZVndFJz9JUK4tvoOuc96k/JBtgmSyn0cmwvWwy0o.J0XOtKW", 
     "expiry":1509642442, 
     "last_token":"$2a$10$Boy8Yp2Znb0uOS9tt/3KYum7PX/Jjmb.Igzo5GUs4tDRCejDU5bya", 
     "updated_at":"2017-10-19T12:07:22.356-05:00" 
    }, 
    "-Z2_wBWzH1GHiAjCAaHAKA":{ 
     "token":"$2a$10$d6b2GP5N3WT4/fR62S1VL.kiLx9w0YA6Rb5aVYQtXMBPImLx9ix2i", 
     "expiry":1509654584, 
     "last_token":"$2a$10$qFTq5JqGUBXayXODsKUSROjjw.TrFYVGtf.EEULCzRWIhMa79ycZS", 
     "updated_at":"2017-10-19T15:29:44.204-05:00" 
    } 
} 

Aber das Ergebnis meiner Anfrage bekomme ich immer 401 Nicht autorisierte.

Ich benutze das zweite Json-Objekt, wo der Schlüssel ich als Client-Parameter und das Token-Attribut, ich habe es als meine access_token Parameter in meiner Anfrage über PUT.

Mache ich meine Anfrage korrekt mit den Parametern, die ich eingestellt habe? O Wie bekomme ich die Client- und Access-Token-Parameter?

Antwort

0

vielleicht dies könnte Ihnen helfen, die Dokumentation umfasst die following infos

Konto Updates. Diese Route aktualisiert die Kontoeinstellungen eines vorhandenen Nutzers. Die standardmäßig akzeptierten Parameter sind password und password_confirmation, aber dies kann mit dem System devise_parameter_sanitizer angepasst werden. Wenn config.check_current_password_before_update auf: attributes gesetzt ist, wird der Parameter current_password vor jeder Aktualisierung geprüft, wenn er auf: password eingestellt ist, wird der Parameter current_password nur überprüft, wenn die Anfrage das Benutzerpasswort aktualisiert.

enter image description here

Ich frage mich also, tun Sie dies starke params Erklärungen für die edit action in Ihrem devise enthalten haben?

Aber immer noch gibt es keine Erklärung, dass es eine 401 nicht autorisierte zurückgibt.

401 Unauthorized (RFC 7235) Similar to 403 Forbidden, but specifically for use when authentication is required and has failed or has not yet been provided. The response must include a WWW-Authenticate header field containing a challenge applicable to the requested resource. See Basic access authentication and Digest access authentication.[33] 401 semantically means "unauthenticated",[34] i.e. the user does not have the necessary credentials. Note: Some sites issue HTTP 401 when an IP address is banned from the website (usually the website domain) and that specific address is refused permission to access a website.

Verwandte Themen