The following details a possible integration of Acegi Security with WebWork:-

Step 1 - Declaring Authz Interface

import org.acegisecurity.taglibs.velocity.Authz;
public interface AuthzAware {
        void setAuthz(Authz authz);
}

Step 2 - Implementing Authz Interceptor

import org.acegisecurity.taglibs.velocity.Authz;
import org.acegisecurity.taglibs.velocity.AuthzImpl;
import package.api.AuthzAware;
 
import com.opensymphony.xwork.ActionInvocation;
import com.opensymphony.xwork.interceptor.Interceptor;
 
public class AuthzInterceptor implements Interceptor {
        public void destroy()
        {}
 
        public void init()
        {}
 
        public String intercept(ActionInvocation invocation)
                throws Exception
        {
                if (invocation.getAction() instanceof AuthzAware) {
                        Authz authz = new AuthzImpl();
 
                        AuthzAware authzAware = (AuthzAware)invocation.getAction();
                        authzAware.setAuthz(authz);
                }
 
                return invocation.invoke();
        }
}

Step 3 - Making AuthzAware action

import org.acegisecurity.taglibs.velocity.Authz;
import package.api.AuthzAware;
import com.opensymphony.xwork.ActionSupport;
 
 
public class DashboardAction extends ActionSupport implements AuthzAware
{
        private Authz authz;
 
        public Authz getAuthz(){
                return authz;
        }
 
        public void setAuthz(Authz authz)
        {
                this.authz = authz;
        }
 
        public String execute() throws Exception
        {
                return SUCCESS;
        }
}

Step 4 - Declaring interceptor

<interceptor name="authz" class="package.interceptor.AuthzInterceptor"/>

Step 5 - Declaring action

<action name="dashboard" class="package.action.DashboardAction">
        <interceptor-ref name="authz" />
        <result type="velocity" name="success">dashboard.vm</result>
</action>

Step 6 - mplementing dashboard.vm

Actualy you are logged as $authz.principal

Contributed by Luca Marrocco.

  • No labels