Extend Session Of Liferay When Performing Ajax Call
I created a portlet that uses AJAX every function. That is, the portlet is only rendered once and i didnt utilize processAction or the like. Is there a way to extend the user's ses
Solution 1:
I had same issue and solved it. The main idea is to override session.js into ext-plugin, and add some additional method:
extendExternal: function() {
var instance = this;
if (instance != undefined) {
instance.extend();
}
}
also setCookie method should be updated:
setCookie: function(status) {
var instance = this;
var currentTime = newDate().getTime();
var options = {
secure: A.UA.secure,
path: "/"
};
A.Cookie.set(instance._cookieKey, status || currentTime, options);
}
In order to use the same cookie path for each page.
And some global ajax event can be used for 'automatical' call of extendExternal method:
AUI().use('event', function(A){
A.on('io:start', function(transactionid, arguments){
if (Liferay.Session._cookieKey != undefined && Liferay.Session._cookieKey != null) {
if (arguments != 'sessionExtend') {
Liferay.Session.extendExternal();
}
}
});
});
in this case extend method have to be updated with:
// added in orderto differentiate session extend ajax calls and other ajax call, to avoid infinit loop
A.io.request(instance._sessionUrls.extend, {
arguments: 'sessionExtend'
});
You can check solution here.
Solution 2:
Liferay.Session.extend(); is the answer, i didnt notice that the session is extended when testing the code
Post a Comment for "Extend Session Of Liferay When Performing Ajax Call"