Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does DotNetNuke log me out on post ajax requests?

Tags:

c#

dotnetnuke

Previously, when I tried to do an ajax call to an ashx as a non-superuser account (i.e. as portal specific user) my web server would return cookies to clear my authorization. I posted a question about this and it seemed the answer was to make sure that the portalid=xx was specified in my GET parameters.

However, I have just found out that if I add portalid=xx in a POST request, DotNetNuke seems to ignore and and log out any non-superuser account.

How can I keep authorization during DNN POST ajax requests?

like image 944
KallDrexx Avatar asked Nov 13 '22 23:11

KallDrexx


1 Answers

I think I have a good handle on the whole situation, and unfortunately it appears that the only true solution is to make sure each child portal has its own subdomain rather than a sub-url (e.g. portal.domain.com rather than domain.com/portal).

The problem is that when your portal 0 is domain.com but portal 1 is domain.com/portal everything works correctly until you need to access an .ashx file via ajax. What happens then is the URL that's requested is instead domain.com/DesktopModules/MyModule/Handler.ashx, which does not contain the /portal/ in it, thus causing DNN to think you are doing a request on portal 0 and logging you out.

While GET requests can overcome this with a portal=1 parameter, this does not seem to work for POST requests.

Therefore, the best solution it seems is to have your portal on a distinct subdomain (portal.domain.com), and then you don't risk missing something like this.

like image 110
KallDrexx Avatar answered Nov 15 '22 12:11

KallDrexx