Hi Alex, The easiest way to do this is to construct the Subject instance associated with the session given to the listener:
Subject owningSubject = new Subject.Builder().session(theSession).buildSubject(); You can interact with the 'owningSubject' instance to acquire what you need (e.g. owningSubject.getPrincipal()). This way, you don't need to know about the implementation details of how to acquire the principals (i.e. what session key to use, etc). This is good because those implementation details might change over time, but your code based on the Subject.Builder should always work the same way. Cheers, Les Hazlewood CTO, Stormpath | http://www.stormpath.com | 888.391.5282 twitter: @lhazlewood | http://twitter.com/lhazlewood blog: http://leshazlewood.com stormpath blog: http://www.stormpath.com/blog/ On Thu, Apr 5, 2012 at 12:34 PM, Alex Vasilenko <[email protected]> wrote: > Hello, > > Is there any simple solution to retrieve user's principals in > SessionListener? As far as I understand it's abstracted from subject and > there's no way to get it simply w/o hacking into shiro code. > > Why do I need this: > We have pretty common use-case: show users, who are online. With > SessionListener it would be quite easy - #onStart() mark user as online, > #onExpiration() and #onStop() - as offline. > > Thanks, > Alexandr Vasilenko >
