Wait a minute…
SecurityService is for Authenticating the dashboard and maybe some basic stuff for the front end, are you saying you are using that for Admin and Editors to authenticate or are you doing something for your members here?
If you are referring to users in the context of members of the website / readers aka membership like. Then I would maybe think about it a different way.
For example I have in the works an oAuth2.0 module for ContentBox that is currently working against FaceBook, the concept is the same every single request is Authenticated against Facebook. I have it set up to cache the authentication and other things, but this is a simple securtiyService that is designed for FaceBook.
In other words, you are not tied to having to use the securityService of ContentBox and can very easily lock your module down with its own securityService or your could extend ContentBox to provide both for the module.
But let me discuss Facebook authentication with you.
One of the things that an App on Facebook has to check for, is that they have the permission to do things with the user. Because the user can deny access at any time, the requirement here is that we could request the authentication every request or cache it in the session. But if we cache it in the session then there is a 30 minute or whatever the session is set too, before the application will check again. And that is provided the user doesn’t keep the session open.
So the logical thing there was to hit facebook and authenticate each request, this is not a bug deal for something like this because the time it takes facebook to do this is minimal.
But either way, the decision is what works for what you need it to do.
Now lets go back to your observation…
The SecurityService caches the ID of the Author in the session, at that point that is all it knows. So for the SecurityService to then get more information about what rules the user has or what permissions etc., then a call needs to be made, which is what you are observing.
Does that clear it up some, if you are storing more than the ID in the session, I would seriously have a think about changing that behavior.