0
我的科爾多瓦應用程序有一個登錄名(用戶名/密碼),一旦通過身份驗證,應用程序文件系統的根目錄下就會創建一個名爲stk.db的文件。科爾多瓦應用程序本地存儲在應用程序重新安裝後仍然存在
當我卸載應用程序&重新安裝它時,我自動使用之前登錄的帳戶登錄(由於stk.db文件正在讀取&拉出與用戶帳戶相關的'標記' )。
很明顯,我想讓用戶被迫輸入新的用戶帳戶,如果他們重新安裝應用程序,基於下面的代碼的最佳方法是什麼?
define([
"jquery",
"backbone",
"config",
"stk/controllers/errorController",
"stk/controllers/accountController",
"stk/controllers/onboardController",
"stk/controllers/stkController"
],
function(
$,
Backbone,
Config,
ErrorController,
AccountController,
OnboardController,
stkController)
{
"use strict";
// --------------------------------------------------------------------------------------------
// Controller
// --------------------------------------------------------------------------------------------
var app = function(router) {
var self = this;
self.router = router;
self.views = {};
self.ctors = {};
self.stack = [
{ id: 0, name : "Account", selected: true, direction: null },
{ id: 1, name : "Achievements", selected: false, direction: null },
{ id: 2, name : "Prizes", selected: false, direction: null },
{ id: 3, name : "Shop", selected: false, direction: null },
{ id: 4, name : "Leaderboard", selected: false, direction: null },
{ id: 5, name : "Stats", selected: false, direction: null },
{ id: 6, name : "Contactus", selected: false, direction: null }
];
// --------------------------------------------------------------------------------------------
// register events
// --------------------------------------------------------------------------------------------
_.extend(this, Backbone.Events);
this.on("error", function (args) { this.error(args); }, this);
this.on("start", function (args) { this.db(args); }, this);
this.on("login:complete", function (args) { this.loginComplete(args); }, this);
this.on("onboard:complete", function (args) { this.onboardComplete(args); }, this);
// --------------------------------------------------------------------------------------------
// event handlers
// --------------------------------------------------------------------------------------------
this.db = function() {
var self = this;
var loadDB = function(callback) {
self.storage(callback);
}
loadDB(function(db) {
var check = {};
$.each(db.split("|"), function() {
var entry = this.split(":");
check[entry[0]] = entry[1];
})
self.start(check);
})
};
this.start = function(db) {
if (db.loggedin != "true") {
this.login();
} else {
this.token = db.token;
if (db.boarded === "true") {
this.launch();
} else {
this.onboard();
}
}
};
this.isCarUser = function (usercb) {
var self = this;
var check = {};
self.storage(function (db) {
$.each(db.split("|"), function() {
var entry = this.split(":");
check[entry[0]] = entry[1];
})
usercb(check.Car_user);
});
};
this.error = function(message) {
var handle = "errorCtor";
(this.ctors[handle] === undefined)
? new ErrorController().setup(handle).events().init(message)
: this.ctors[handle].init(message);
};
this.login = function(args) {
var handle = "accountCtor";
(this.ctors[handle] === undefined)
? new AccountController().setup(handle).events().init(args)
: this.ctors[handle].init(args);
};
this.loginComplete = function(args) {
var self = this;
self.token = args;
var store = function(callback) {
self.setLoggedIn(callback, self.token);
}
store(function(db) {
self.onboard();
});
};
this.onboard = function(args) {
var handle = "onboardCtor";
(this.ctors[handle] === undefined)
? new OnboardController().setup(handle).events().init(args)
: this.ctors[handle].init(args);
};
this.onboardComplete = function(args) {
var self = this;
var store = function(callback) {
self.setBoarded(callback, self.token);
}
store(function() {
self.launch();
});
};
this.launch = function(args) {
var handle = "stkCtor";
(this.ctors[handle] === undefined)
? new stkController().setup(handle).events().init(args)
: this.ctors[handle].init(args);
};
// --------------------------------------------------------------------------------------------
// FS
// --------------------------------------------------------------------------------------------
this.setBoarded = function(callback, token) {
var self = this;
var fc = 'opened:true|loggedin:true|boarded:true||Car_user:false|token:' + token;
var errorHandler = function(e) {
self.error(e);
};
var onInitFs = function(fs) {
fs.root.getFile('stk.db', {}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
callback(fc);
};
fileWriter.onerror = function(e) {
self.error(e.toString());
};
var boarded = new Blob([fc], {type: 'text/plain'});
fileWriter.write(boarded);
}, errorHandler);
});
};
if (window.isDevice) {
window.requestFileSystem(window.PERSISTENT, 512, onInitFs, errorHandler);
} else {
callback(fc);
}
};
this.setLoggedIn = function(callback, token) {
var self = this;
var fc = 'opened:true|loggedin:true|boarded:false|Car_user:false|token:' + token;
var errorHandler = function(e) {
self.error(e);
};
var onInitFs = function(fs) {
fs.root.getFile('stk.db', {}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
callback(fc);
};
fileWriter.onerror = function(e) {
self.error(e.toString());
};
var loggedIn = new Blob([fc], {type: 'text/plain'});
fileWriter.write(loggedIn);
}, errorHandler);
});
};
if (window.isDevice) {
window.requestFileSystem(window.PERSISTENT, 512, onInitFs, errorHandler);
} else {
callback(fc);
}
};
this.setCarUser = function(callback, CarUser){
var self = this;
var fc = 'opened:true|loggedin:true|boarded:true|token:' + this.token + "|Car_user:"+ CarUser;
var errorHandler = function(e) {
self.error(e);
};
var onInitFs = function(fs) {
fs.root.getFile('stk.db', {}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
callback(fc);
};
fileWriter.onerror = function(e) {
self.error(e.toString());
};
var loggedIn = new Blob([fc], {type: 'text/plain'});
fileWriter.write(loggedIn);
}, errorHandler);
});
};
if (window.isDevice) {
window.requestFileSystem(window.PERSISTENT, 512, onInitFs, errorHandler);
} else {
callback(fc);
}
}
this.storage = function(callback) {
var self = this;
var fc = 'opened:true|loggedin:false|boarded:false|token:null|Car_user:false';
var errorHandler = function(e) {
console.log(e);
};
var onInitFs = function(fs) {
fs.root.getFile('stk.db', {}, function(fileEntry) {
fileEntry.file(function(file) {
var reader = new FileReader();
reader.onloadend = function(e) {
callback(this.result);
};
reader.readAsText(file);
}, errorHandler);
}, function() {
fs.root.getFile('stk.db', {create: true, exclusive: true}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
callback(fc);
};
fileWriter.onerror = function(e) {
self.error(e.toString());
};
var opened = new Blob([fc], {type: 'text/plain'});
fileWriter.write(opened);
}, errorHandler);
}, errorHandler);
});
};
if (window.isDevice) {
window.requestFileSystem(window.PERSISTENT, 512, onInitFs, errorHandler);
} else {
callback(fc);
}
};
};
return app;
}
);
我認爲如果您使用「localStorage」來保存登錄信息而不是使用本地文件localStorage.getItem(「loginInfo」);會更好。它將被自動刪除,如果應用程序被卸載 –
我不得不同意 - 該應用程序是由一個外部開發公司開發,有點衝到它imho – Zabs