Access Controllers
Introduction
An AccessController has the responsibility to authenticate clients and to authorize requests.
Defining the Role in lenya.roles
<role name="org.apache.lenya.ac.AccessController"
shorthand="access-controller"
default-class="org.apache.lenya.ac.impl.BypassableAccessController"/>
Declaring an AccessController in cocoon.xconf
Each AccessController component needs a type that is attached to the role attribute, separated with a slash (/). This allows you to choose an AccessController in your publication in combination with the PublicationAccessControllerResolver. The following example shows the declaration of an AccessController with the type bypassable:
<component logger="lenya.ac.accesscontroller.bypassable"
class="org.apache.lenya.ac.impl.BypassableAccessController"
role="org.apache.lenya.ac.AccessController/bypassable">
...
</component>
Default Access Controller
The DefaultAccessController combines an Authenticator, a set of Authorizers, an AccreditableManager and a PolicyManager to perform these tasks.
<component logger="lenya.ac.accesscontroller.default"
class="org.apache.lenya.ac.impl.DefaultAccessController"
role="org.apache.lenya.ac.AccessController/default"/>
Bypassable Access Controller
The BypassableAccessController is a DefaultAccessController that can be bypassed for certain URL patterns. For URLs that match those patterns (regular expressions), access is granted for free.
The BypassableAccessController allows the definition of a regular expression for the public URL patterns:
<component logger="lenya.ac.accesscontroller.bypassable"
class="org.apache.lenya.ac.impl.BypassableAccessController"
role="org.apache.lenya.ac.AccessController/bypassable">
<public>.*[.]css|.*[.]jpg|.*[.]gif</public>
</component>
Customizing Access Control
How can I store my users in a database?
You have to implement a UserManager wich accesses the database to obtain the user information. Additionally, you have to implement an AccreditableManager which uses this UserManager. This AccreditableManager has to be declared in cocoon.xconf and assigned to your AccessController in lenya/pubs/mypub/config/ac/ac.xconf.



