Class ConcurrentSessionControlAuthenticationStrategy

    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected org.springframework.context.support.MessageSourceAccessor messages  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void allowableSessionsExceeded​(java.util.List<SessionInformation> sessions, int allowableSessions, SessionRegistry registry)
      Allows subclasses to customise behaviour when too many sessions are detected.
      protected int getMaximumSessionsForThisUser​(Authentication authentication)
      Method intended for use by subclasses to override the maximum number of sessions that are permitted for a particular authentication.
      void onAuthentication​(Authentication authentication, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
      In addition to the steps from the superclass, the sessionRegistry will be updated with the new session information.
      void setExceptionIfMaximumExceeded​(boolean exceptionIfMaximumExceeded)
      Sets the exceptionIfMaximumExceeded property, which determines whether the user should be prevented from opening more sessions than allowed.
      void setMaximumSessions​(int maximumSessions)
      Sets the maxSessions property.
      void setMessageSource​(org.springframework.context.MessageSource messageSource)
      Sets the MessageSource used for reporting errors back to the user when the user has exceeded the maximum number of authentications.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • messages

        protected org.springframework.context.support.MessageSourceAccessor messages
    • Constructor Detail

      • ConcurrentSessionControlAuthenticationStrategy

        public ConcurrentSessionControlAuthenticationStrategy​(SessionRegistry sessionRegistry)
        Parameters:
        sessionRegistry - the session registry which should be updated when the authenticated session is changed.
    • Method Detail

      • onAuthentication

        public void onAuthentication​(Authentication authentication,
                                     javax.servlet.http.HttpServletRequest request,
                                     javax.servlet.http.HttpServletResponse response)
        In addition to the steps from the superclass, the sessionRegistry will be updated with the new session information.
        Specified by:
        onAuthentication in interface SessionAuthenticationStrategy
      • getMaximumSessionsForThisUser

        protected int getMaximumSessionsForThisUser​(Authentication authentication)
        Method intended for use by subclasses to override the maximum number of sessions that are permitted for a particular authentication. The default implementation simply returns the maximumSessions value for the bean.
        Parameters:
        authentication - to determine the maximum sessions for
        Returns:
        either -1 meaning unlimited, or a positive integer to limit (never zero)
      • allowableSessionsExceeded

        protected void allowableSessionsExceeded​(java.util.List<SessionInformation> sessions,
                                                 int allowableSessions,
                                                 SessionRegistry registry)
                                          throws SessionAuthenticationException
        Allows subclasses to customise behaviour when too many sessions are detected.
        Parameters:
        sessions - either null or all unexpired sessions associated with the principal
        allowableSessions - the number of concurrent sessions the user is allowed to have
        registry - an instance of the SessionRegistry for subclass use
        Throws:
        SessionAuthenticationException
      • setExceptionIfMaximumExceeded

        public void setExceptionIfMaximumExceeded​(boolean exceptionIfMaximumExceeded)
        Sets the exceptionIfMaximumExceeded property, which determines whether the user should be prevented from opening more sessions than allowed. If set to true, a SessionAuthenticationException will be raised which means the user authenticating will be prevented from authenticating. if set to false, the user that has already authenticated will be forcibly logged out.
        Parameters:
        exceptionIfMaximumExceeded - defaults to false.
      • setMaximumSessions

        public void setMaximumSessions​(int maximumSessions)
        Sets the maxSessions property. The default value is 1. Use -1 for unlimited sessions.
        Parameters:
        maximumSessions - the maximimum number of permitted sessions a user can have open simultaneously.
      • setMessageSource

        public void setMessageSource​(org.springframework.context.MessageSource messageSource)
        Sets the MessageSource used for reporting errors back to the user when the user has exceeded the maximum number of authentications.
        Specified by:
        setMessageSource in interface org.springframework.context.MessageSourceAware