"Final" updates on improved session management
This commit is contained in:
parent
95ceb82eed
commit
b9d6aea3ea
14
README.md
14
README.md
|
@ -95,4 +95,16 @@ displayed. To minimize this, better timeout mechanisms have been
|
|||
installed and the recipe browser keeps last-search and search-type
|
||||
values in long-lived cookies on the client. The server will read
|
||||
and cache them, but if the server times out, it will automatically
|
||||
re-read the cookies on the next request.
|
||||
re-read the cookies on the next request.
|
||||
|
||||
When editing, the AJAX controls tended to get confused when a
|
||||
session timed out. New changes give a "save work" warning 5 minutes
|
||||
before timeout, and force a timeout from JavaScript that
|
||||
exits the unattended page before the user can run afoul of the
|
||||
lost session.
|
||||
|
||||
Note that by default, JSF caches ViewState in a session so every
|
||||
JSF View can cause a session to be created, not just Views that
|
||||
reference View- or SessionScoped backing beans. This is alterable
|
||||
by setting an option in the faces-config.
|
||||
force
|
|
@ -24,3 +24,6 @@ gourmet.password.file=${user.home}/.gourmetpw
|
|||
|
||||
# This will override aplication.yml
|
||||
#server.servlet.context-parameters.primefaces.THEME=le-frog
|
||||
|
||||
### HttpSession timeout (note effects on detailEdit idleMonitors)
|
||||
server.servlet.session.timeout=35m
|
||||
|
|
|
@ -22,6 +22,7 @@ import jakarta.inject.Named;
|
|||
|
||||
/**
|
||||
* Request caching object for cookie data persistence.
|
||||
* Does double-duty serving View Session timeouts.
|
||||
*
|
||||
* @author timh
|
||||
* @since Jan 31, 2024
|
||||
|
@ -125,13 +126,16 @@ public class CookieBean {
|
|||
cookieMap.put(KEY_DISPLAY_ROWS, String.valueOf(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* IdleMonitor backing methods (session/View timeout)
|
||||
*/
|
||||
public void sessionIdleListener() {
|
||||
log.warn("Session Idle Listener fired.");
|
||||
log.info("Session Idle Listener fired.");
|
||||
JSFUtils.addWarningMessage("Timeout approaching. Save your work!");
|
||||
}
|
||||
|
||||
public void sessionTimeout() {
|
||||
log.warn("Session Timeout Listener fired.");
|
||||
log.info("Session Timeout Listener fired.");
|
||||
JSFUtils.logout();
|
||||
}
|
||||
|
||||
|
|
|
@ -391,11 +391,7 @@
|
|||
</p:panel>
|
||||
</p:tab>
|
||||
</p:tabView>
|
||||
<p:commandButton id="doSave" value="Save"
|
||||
icon="ui-icon-pencil" ajax="false"
|
||||
disabled="{not recipeDetailBean.dirty}"
|
||||
action="#{recipeDetailBean.doSave}"
|
||||
/>
|
||||
<p:commandButton id="doSave" value="Save" icon="ui-icon-pencil" ajax="false" disabled="{not recipeDetailBean.dirty}" action="#{recipeDetailBean.doSave}" />
|
||||
<p:commandButton id="doCancel" value="Cancel"
|
||||
ajax="false" immediate="true"
|
||||
action="recipeDetails.jsf"
|
||||
|
|
Loading…
Reference in New Issue
Block a user