Ich habe eine Rails-Anwendung, die Devise für die Benutzerauthentifizierung verwendet. Ich entwickle ein Add-on und benutze Ajax Ich mache einen Post zu meiner Anmeldung Route senden Benutzername und Passwort (Benutzer [E-Mail] und Benutzer [Passwort]) Parameter.Mozilla Hinzufügen bei dem Versuch, sich bei einer Rails-Anwendung anzumelden, die Devise verwendet
Ich versuche, eine Post an die XML-Route (Benutzer/sign_in.xml) zu machen, damit ich eine XML-Antwort bekomme. Der Rails-Server funktioniert einwandfrei und erstellt die Sitzung.
Ich führe das von Ajax und es gibt Erfolg zurück. Wenn ich danach versuche, einen anderen Dienst auszuführen, der eine Authentifizierung erfordert, wird ein Fehler zurückgegeben, der besagt, dass ich nicht angemeldet bin. Möglicherweise muss ich bei den nächsten Aufrufen an den Rails-Server einen Cookie speichern oder einen Cookie senden.
Von Content-Skript Ich rufe:
function signInSubmit(){
var email = $('#sign_in_email').val();
var password = $('#sign_in_password').val();
signIn(email, password);
}
function signIn(email, password){
var sign_in_data = {
'user[email]' : email,
"user[password]" : password
}
var params = EncodeQueryData(sign_in_data);
invoke("https://stackoverflow.com/users/sign_in", params, signInCallBack);
}
function invoke(url_method, parameters, callback){
var url = url_api + url_method + ".xml?" + parameters;
var req = new XMLHttpRequest();
type = 'POST';
req.open("POST", url, true);
req.overrideMimeType('text/xml');
req.onreadystatechange = function() {
if (req.readyState == 4) {
if (req.status == 200) {
callback(req.responseXML);
}else if(req.status == 201){
callback(req.responseXML);
}
}
};
req.send();
}
function signInCallBack(doc){
//This returns an XML saying that authentication was successfull.
// Session was created in the server
login_session_key = doc.getElementsByTagName("email")[0].childNodes[0].nodeValue
callMethodThatNeedsAuthentication();
}
function callMethodThatNeedsAuthentication(){
// This method call returns a not authenticated error.
invoke("/api/methodthatneedsauthentication", "", NeedsAuthenticationCallBack);
}
Was denken Sie?
Wie kann ich eine Sitzung aus SDK-Code verwenden? Denken Sie daran, dass ich im Inhaltsskript eines FireFox Add On – Tony
@Tony: Die Tatsache, dass Sie ein Inhaltsskript (und 'XMLHttpRequest' nehme ich denke) gehört in die Frage - bitte bearbeiten Sie es, um zu erklären, wie Sie genau anmelden . –
Ich habe den Fragen einen Code hinzugefügt. Kannst du mir helfen? – Tony