Forum Discussion
Lucas_Thompson_
Historic F5 Account
As far as I can tell, full webtop, resource webtop links always opens up resources in a new tab.
Lucas_Thompson_
Jan 25, 2019Historic F5 Account
Here's an irule that can work around this issue in some cases. Basically here's the basic working condition:
- User visits / URL with a new browser session
- User is given session cookie and goes through access policy
- User is assigned a webtop
- User is redirected to webtop URL
Now if the user opens a new tab and does step 1 again, the session is destroyed and they can go through those steps again to get the webtop. The session is only destroyed if a webtop is assigned. If you're using LTM+APM mode (no webtop, it goes to just the pool instead), then the / URI request is simply delivered to the pool server.
You can intercept step 1 and check if a user has a session, then do some custom stuff. This irule is simple to modify to suit your use case.
apm_dont_logout_if_new_tab
Tested in v11.4.0
If you hit APM logon page with another already-logged-in browser tab or window open, your
old APM session is destroyed, in favor of the new one. This workaround irule looks up the
existing session and will return an error page instead.
This functionality is different than other typical Web applications, where a log-in is required
to destroy the old session. APM sets the session cookie *immediately* upon hitting the login page,
in order to allow a more flexible approach to the programmability of the login process.
when RULE_INIT {
mode 1 = display error page on user browser if logged on user is already active
mode 2 = redirect the user to their current landing URI (full webtop, etc)
Set mode here \/
set static::mode 2
}
when HTTP_REQUEST {
if { ([HTTP::uri] == "/") && [HTTP::cookie exists MRHSession ] && [ACCESS::session exists] } {
HTTP::close
switch $static::mode {
1 {
HTTP::respond 200 content "Please close
this browser window or exit your current remote access session before visiting
the login page.
Or, "
}
2 {
set starturi [ACCESS::session data get "session.policy.result.start_uri"]
log local0. "redirecting to starturi: $starturi"
HTTP::respond 302 Location "$starturi"
}
default {
return
}
}
return
}
}