Simple and powerful :). Thanks, Les. Alexandr Vasilenko
2012/4/6 Les Hazlewood <[email protected]> > 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 > > >
