We are currently using DevForce Classic (3.7.5.0) on one of our applications.
We are interested in adding some level of session tracking in our app so that a single concurrent instance of a user login can be detected and enforced. We would like to do this in the BOS if we can.
I see that the PersistenceManager login returns to the client a SessionBundle containing a unique SessionKey Guid along with the Principal.
It would be advantageous if we could get to that SessionKey in the server-side methods, SaveSecurityCheck and QuerySecurityCheck, and do some validations on a database session record using that key.
Is there a way from the business object's SaveSecurityCheck method we can get to the SessionBundle from the PersistenceManager's reference?
Upon login I see that the SessionManager maintains a dictionary of SessionKey, Principal. While logout removes the SessionKey entry from the dictionary. How long does this table persist? If the client did not properly logout due to client-side abnormal termination does this mapping table periodically cleans itself?
Is there any functionality on the server that we can tap into to leverage this internal BOS SessionKey table ?
Are there any alternatives you can propose with this version of DevForce to address our login concurrency requirement?