I apologize for being vague. I don't mean a servlet filter, I mean a filter/filtering system with in the tapestry framework. Something that might allow me to supply access logic before page rendering, so that I don't have to require pages to know about the access control system used. I know this can be implemented in pages and simplified by subclassing, but I'm wondering if there is a cleaner way, a more 'separation of concerns' oriented way (a page is page, not an access controller).

Andrea Chiumenti wrote:
Of course there is a filter:
check my project for some filter samples:
http://tapestry-jfly.svn.sourceforge.net/viewvc/tapestry-jfly/trunk/JFlyWebCommons/src/main/

ciao,
kiuma

On 7/18/07, Chris Lewis <[EMAIL PROTECTED]> wrote:

Thank you for your insights. I guess my only complaint is I don't like
forcing pages to implement their security, even through inheritance. I
don't guess there's a filtering system of some sort? Page extention isnt
the end of the world, I'm just curious if this way is a best practice.

Andrea Chiumenti wrote:
> And if you are practice you can also implement you custom jaas login
> module,
> so to keep atuhentication and authorization business logic outside
> your web
> application, like I do un my WL or JBoss counsultancy activity.
>
> Good work,
> kiuma
>
> On 7/18/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
>>
>> > Thanks Kiuma,
>> >
>> > Being that when a new user is added to the system, the system should
>> > create a default role/set of perms, I don't think relying on
>> web.xml is
>> > workable. It seems like a db table (mapped via hibernate) would be
the
>> > best way, but as I'm just migrating to tapestry/java web development,
>> > any opinions are welcome.
>> >
>> > chris
>>
>> Yes we store user information in a Person table and hold on to the
>> currently logged in user inside the Visit object (we use a custom class
>> called "Session"). The Person table has a relationship to the role
table
>> which has a relationship with the permissions table. We store
permission
>> check methods inside an "Authority" class, gettable from the Session.
So
>> you could have:
>>
>> child page class:
>>
>> @Override
>> public void checkPerms() throws PermissionException {
>>     if (!getSession().getAuthority().canAccessSomethingReport()) {
>>        throw new PermissionException("User is not allowed to access
this
>> page.");
>>     }
>> }
>>
>> parent page class:
>>
>> public abstract checkPerms() throws PermissionException;
>>
>> public void pageValidate(PageEvent event) {
>>       try {
>>            checkPerms();
>>       }
>>       catch (PermissionException e) {
>>             throw new PageRedirectException("Forbidden");
>>       }
>> }
>>
>> It seems to work for us, but there may be better ways of doing it. I've
>> never used JAAS either.
>>
>> Damien
>>
>> >
>> > Andrea Chiumenti wrote:
>> >> yes for every Q!
>> >>
>> >> "It looks like this method checks against a role list in the
>> deplyment
>> >> descriptor" -> JAAS (if u mean web.xml)
>> >>
>> >> Ciao,
>> >> kiuma
>> >>
>> >> On 7/17/07, Chris Lewis <[EMAIL PROTECTED]> wrote:
>> >>>
>> >>> So all pages that are restricted must extend a page that implements
>> the
>> >>> security checks perms and handles enforcement, correct?
>> >>> Regarding jaas, I've not used it before, but the
>> >>> HttpServletRequest#isUserInRole method uses it? It looks like this
>> >>> method checks against a role list in the deplyment descriptor.
>> >>>
>> >>> Thanks tons for your input!
>> >>>
>> >>> chris
>> >>>
>> >>> Andrea Chiumenti wrote:
>> >>> > do u want jaas ?
>> >>> > if so:
>> >>> > <inject property="request" object="service:
>> >>> > tapestry.globals.HttpServletRequest"/>
>> >>> > in ur code:
>> >>> >
>> >>> > getRequest().isUserInRole('somerole');
>> >>> >
>> >>> > Ciao,
>> >>> > kiuma
>> >>> >
>> >>> > On 7/17/07, Damien Uern <[EMAIL PROTECTED]> wrote:
>> >>> >>
>> >>> >> Chris Lewis wrote:
>> >>> >> > Hello all,
>> >>> >> >
>> >>> >> > I am seeking information/code samples on how to implement user
>> >>> access
>> >>> >> > control in Tapestry (4.1.2). Specifically, restricting pages
to
>> >>> >> > authenticated users. I assume that all restricted pages would
>> >>> have to
>> >>> >> > make a call to an authentication system, checking if the
>> user is
>> >>> >> logged
>> >>> >> > in and if they have access to the page. If a user tries to
>> access
>> >>> a
>> >>> >> page
>> >>> >> > they are not authorized to view, then "something" should
>> happen.
>> >>> This
>> >>> >> > something may just be a message or an error page - the
>> important
>> >>> >> part is
>> >>> >> > how to implement this across pages or a group of pages. Thanks
>> for
>> >>> >> your
>> >>> >> > input!
>> >>> >> >
>> >>> >> > chris
>> >>> >>
>> >>> >> Piece of cake, you can create a page that handles authentication
>> >>> >> checking as follows:
>> >>> >>
>> >>> >> public abstract class AbstractSecurePage extends AbstractPage
>> >>> implements
>> >>> >>                 PageValidateListener {
>> >>> >>
>> >>> >>     InjectState("visit")
>> >>> >>     public abstract Session getSession();
>> >>> >>
>> >>> >>     public void pageValidate(PageEvent event) {
>> >>> >>          //check user permissions here e.g.:
>> >>> >>
>> >>> >>          if (!getSession().isUserLoggedIn()) {
>> >>> >>             throw new PageRedirectException("LoginPage");
>> >>> >>          }
>> >>> >>     }
>> >>> >>
>> >>> >>
>> >>> >> }
>> >>> >>
>> >>> >> Hope that helps :D
>> >>> >>
>> >>> >> Damien
>> >>> >> --
>> >>> >>
>> >>> >>
>> >>> >> Damien Uern
>> >>> >> Online Applications Developer
>> >>> >> Synect Online Solutions
>> >>> >>
>> >>> >>
>> ---------------------------------------------------------------------
>> >>> >> 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]
>>
>>
>


---------------------------------------------------------------------
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]

Reply via email to