I think the logic:present tag will allow access to any of the roles
mentioned.


Mohan 

-----Original Message-----
From: Tim Christopher [mailto:[EMAIL PROTECTED] 
Sent: Thursday, January 27, 2005 9:41 AM
To: Struts Users Mailing List
Subject: Re: Struts Security

Just a quick question...  What is gained by using code like this:

>>>
    String[] roles = mapping.getRoleNames();
    if(roles == null || roles.length == 0)
        return true
    for(int i=0; i<roles.length; i++)  {
        if(request.isUserInRole(roles[i])) {
            return true;
        }
    }
    return false;
<<<

...isn't that the same as <logic:present role="roleA, roleB, roleG">? 
Or is that a check for all roles: roleA, roleB, and roleG?

Tim


On Wed, 26 Jan 2005 20:27:22 -0700, Nic Holbrook <[EMAIL PROTECTED]>
wrote:
> I forgot to mention the reason I did this was because we already had a

> security mechanism in place and didn't have the liberty of using 
> realms on the web or anything like that.  It had to be a custom
configuration.
> 
> Nic Holbrook wrote:
> 
> > I kind of set our security up before the struts menu was in place.
> > What I have done that seems to work well so far is extend the Action

> > class with a SecureAction class that validates the users role before

> > it lets the user into an action.  The execute method actually 
> > validates and calls an abstract secureExecute (which is now the main

> > struts method) if the user is in the role.  I set a roleId in the 
> > struts-config.xml for each action which really isn't a big deal 
> > (<set-property property="actionRole" value="700"/>).  That way the 
> > role is set up 1 time for each action.  You can use the same role 
> > for several actions of you like.  When the user logs in, I retrieve 
> > all the roles allowed for that user and store it in a UserContext 
> > object in the session.  I then have a menu tag that dynamically 
> > builds the menu for them which isn't that difficult to set up.  I 
> > use it in a tile so I only insert it 1 time.
> >
> > Just some ideas.
> >
> >
> >
> > Craig McClanahan wrote:
> >
> >> On Sun, 23 Jan 2005 18:39:50 +0000, Tim Christopher 
> >> <[EMAIL PROTECTED]> wrote:
> >>
> >>
> >>> Hi,
> >>>
> >>> I am designing a web application using Struts, which will run 
> >>> using Tomcat.  The system will have upwards of 1000 users, with 
> >>> each user having any number of around 10 possible roles.
> >>>
> >>> I'm currently thinking of using JDBCRealm within the Tomcat xml 
> >>> file to set the roles for each of the users, then extending the 
> >>> RequestProcessor to ensure only authorised users can enter the 
> >>> secure area.  I then have a number of menu options that should 
> >>> only be made visible to users with certain roles; I intend to use 
> >>> logic:present role=".." or req:isUserInRole role="..." to do this 
> >>> - from what I can see they are functionally identical(?).
> >>>
> >>>
> >>
> >>
> >> The implementation of logic:present role= uses 
> >> request.isUserInRole() under the covers :-).
> >>
> >>
> >>
> >>> I guess what I'd like to know is:
> >>> * Will this approach actually work?
> >>>
> >>
> >>
> >> Yep.
> >>
> >>
> >>
> >>> * Is there a better way?
> >>>
> >>
> >>
> >> This sounds best for your use case.
> >>
> >>
> >>
> >>> * Will any changes to user roles made within the database 
> >>> automatically update the roles that tomcat uses from the 
> >>> JDBCRealm, or will it require a server restart?
> >>>
> >>
> >>
> >> Tomcat's JDBCRealm caches the relevant roles for a user when he or 
> >> she logs on, so they won't change for the length of that session 
> >> ... but changes will get reflected next time the same person logs
on.
> >>
> >>
> >>
> >>> * Also if I use a check within the jsp like logic:present
role=".."
> >>> to decide if a component should be dispalyed, I have read it is 
> >>> also advisable to require to presence of a role to use the Action.

> >>> This method will require two updates to allow an additional an 
> >>> additional role to access a resource (update in the jsp, and in 
> >>> the xml file) - is there a way around this?
> >>>
> >>
> >>
> >> You can prohibit direct access to JSP pages (requiring that they go

> >> through an Action first) and only need to configure the XML file to

> >> limit access to a complete page.  But you'll still need the inner 
> >> logic if you want to do things differently, based on role, within a

> >> page.
> >>
> >>
> >>
> >>> Thank you in advance,
> >>>
> >>> Tim Christopher
> >>>
> >>>
> >>
> >>
> >> Craig
> >>
> >> -------------------------------------------------------------------
> >> -- To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
> >>
> >>
> >
> >
> > --------------------------------------------------------------------
> > - To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



This message is for the designated recipient only and may contain privileged, 
proprietary, or otherwise private information.  If you have received it in 
error, please notify the sender immediately and delete the original.  Any other 
use of the email by you is prohibited.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to