我有一個使用Devise進行用戶身份驗證的Rails應用程序。我正在開發一個附加組件並使用ajax,我在發送用戶名和密碼(用戶[email]和用戶[password])參數的路由中發佈了一條信息。Mozilla添加試用登錄到使用Devise的Rails應用程序
我想做一個帖子到XML路線(users/sign_in.xml),所以我得到一個XML響應。 Rails服務器正常工作並創建會話。
我從ajax執行它並返回成功。之後,如果我嘗試執行另一個需要身份驗證的服務,它會返回一條錯誤消息,指出我沒有登錄。也許我必須存儲cookie或在接下來的Rails服務器調用中發送cookie。
從內容腳本,我呼籲:
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);
}
你覺得呢?
如何從SDK代碼使用會話? 請記住,我在FireFox的內容腳本中添加On @ – Tony 2012-03-31 13:37:57
@Tony:我使用內容腳本(和「XMLHttpRequest」,我猜)屬於這個問題 - 請編輯它以解釋如何準確登錄。 – 2012-04-02 05:42:52
我在問題中添加了一些代碼。你可以幫幫我嗎? – Tony 2012-04-02 13:56:53