HI,
I created app using WAB 2.8 developer edition, downloaded and hosted on my web server. It working fine.
I want to use this code Identity Manager with info persisted client side | ArcGIS API for JavaScript 3.25 in app, store token at client side, and show Sign In dialog automatically after 1 hour token expires.
I do not want to use proxy as my requirement is to have token based authentication - display Sign In dialog when you open the app and Sign In dialog automatically get prompted when token expires ?
Where should I add below code in WAB app ?
var map, cred = "esri_jsapi_id_manager_data"; // cookie/local storage name
require([
"dojo/_base/unload",
"dojo/cookie",
"dojo/json",
"dojo/parser", "esri/config", "esri/IdentityManager",
"dojo/domReady!",
], function (baseUnload,
cookie,
JSON,
parser, esriConfig, esriId
){
// store credentials/serverInfos before the page unloads
baseUnload.addOnUnload(storeCredentials);
// look for credentials in local storage
loadCredentials();
parser.parse();
esriConfig.defaults.io.proxyUrl = "/proxy/";
function loadCredentials(){
var idJson, idObject;
if (supports_local_storage()) {
// read from local storage
idJson = window.localStorage.getItem(cred);
}
else {
// read from a cookie
idJson = cookie(cred);
}
if (idJson && idJson != "null" && idJson.length > 4) {
idObject = JSON.parse(idJson);
esriId.initialize(idObject);
}
else {
// console.log("didn't find anything to load
");
}
}
function storeCredentials(){
// make sure there are some credentials to persist
if (esriId.credentials.length === 0) {
return;
}
// serialize the ID manager state to a string
var idString = JSON.stringify(esriId.toJson());
// store it client side
if (supports_local_storage()) {
// use local storage
window.localStorage.setItem(cred, idString);
// console.log("wrote to local storage");
}
else {
// use a cookie
cookie(cred, idString, {expires: 1});
// console.log("wrote a cookie :-/");
}
}
function supports_local_storage(){
try {
return "localStorage" in window && window["localStorage"] !== null;
} catch (e) {
return false;
}
}
});Thanks.!!