Hi Les Yup all that sounds good, but I was wondering what the "property" attribute was for in the jsec:principal tag. Isn't there a way to lets say put the user domain object into the principal. Because the documentation (and the tag implemetation) does seem to imply that this is possible. jsec:principal would then by default print principalObject.toString().
Animesh On Mon, Sep 15, 2008 at 10:28 PM, Les Hazlewood <[EMAIL PROTECTED]> wrote: > Hi Animesh, > > You can store more than one principal in the PrincipalCollection > returned by the realm. Its just the first one in that collection is, > by convention, the 'primary identifier' of your user (e.g. user id, > username, etc). In your case, this sounds like it is the email > address. But you could add more to the principal collection. > > But that would require you to do this in code: > > Iterator i = subject.getPrincipals().iterator(); > i.next(); //skip the primary one. > String username = (String)i.next(); > > //print out the username. > > Currently the <jsec:principal/> tag does not support anything like > <jsec:principal index="1"/>, which would print out the 2nd principal > in the collection, which it sounds like is what you want. > > If you want this functionality, please open a Jira issue, and we'll be > sure to get it in the next release. > > Also, what a lot of people do is issue a query for that information as > needed: > > String email = subject.getPrincipal(); > String username = userDAO.getUsername( email ); > //print out the username. > > If you have Hibernate 2nd-level caching enabled, and User instances > are in the 2nd-level cache, this won't 'hit' the database. The DAO > implementation would be something like this (if you have 2nd-level > cache enabled): > > User user = hibernateSession.load( User.class, userId ); > return user.getUsername(); > > If you don't have 2nd-level cache enabled for users, you'd have to do a > query: > > "select u.username from User u where u.id = ?"; > > HTH, > > Les > > On Mon, Sep 15, 2008 at 8:19 AM, Animesh Jain <[EMAIL PROTECTED]> > wrote: > > Hi all > > > > I've implemented a custom HibernateRealm by extending the > AuthorizingRealm > > and things seem to be working pretty good i.e. I'm able to login/logout > > users and check roles. > > > > Now, on each of my application screens I'd like to print something like > Hi > > <Name>. But my logins are done using unique emails and so, when I try to > use > > the <jsec:principal/> tag the email gets printed. There's no reference to > > the user name I have here. How should I go about storing a user defined > > principal object here, as I can see the jsec:principal tag also has > > attributes to retrieve values from a property of a principal object. In > my > > case this is a string, how should I set it to something else. > > > > Kind regards > > Animesh > > > > >
