Got the same problem, I can't intercept navigation.
In my JSF page, list.jsf, I have a backing bean, CompanyMBean, and some methods, like create(), that navigate to another page, new.jsf.
Calling #{companyMBean.create} calls CompanyMBean.create method, and render another page, new.jsf, but Acegi check for list.jsf.
I have a custom AccessDecisionVoter (SecurityRoleVoter) and a LoggerListener (SecurityLoggerListener).
The flow is above.
Access the page: /company/list.jsf. Since I'm not logged in, redirect to /login.jsf.
Code:
2007-10-04 14:50:50,296 WARN event.authorization.LoggerListener -> Security interception failed due to: org.acegisecurity.AuthenticationCredentialsNotFoundException: An Authentication object was not found in the SecurityContext; secure object: FilterInvocation: URL: /company/list.jsf; configuration attributes: [IS_AUTHENTICATED_FULLY, ROLE_CONSYS]
2007-10-04 14:50:50,296 INFO business.security.SecurityLoggerListener -> event ---->>>>> 1191520250296
2007-10-04 14:50:50,296 INFO business.security.SecurityLoggerListener -> ---->>>>> FilterInvocation: URL: /company/list.jsf
2007-10-04 14:50:50,437 INFO event.authorization.LoggerListener -> Security interception not required for public secure object: FilterInvocation: URL: /login.jsf
2007-10-04 14:50:50,437 INFO business.security.SecurityLoggerListener -> event ---->>>>> 1191520250437
2007-10-04 14:50:50,437 INFO business.security.SecurityLoggerListener -> ---->>>>> FilterInvocation: URL: /login.jsf
After login, I can access /list.jsf
Code:
2007-10-04 14:53:13,453 INFO business.security.SecurityRoleVoter -> -------------------- checking permissions for -> /company/list.jsf
2007-10-04 14:53:13,453 INFO business.security.SecurityRoleVoter -> -------------------- returning -> 1
2007-10-04 14:53:13,453 INFO business.security.SecurityRoleVoter -> -------------------- checking permissions for -> /company/list.jsf
2007-10-04 14:53:13,453 INFO business.security.SecurityRoleVoter -> -------------------- returning -> 1
2007-10-04 14:53:13,453 INFO event.authorization.LoggerListener -> Security authorized for authenticated principal: org.acegisecurity.providers.UsernamePasswordAuthenticationToken@5a46fcdc: Username: luciano; Password: [PROTECTED]; Authenticated: true; Details: br.com.business.security.SecurityUserDetails@369fdc; Granted Authorities: ROLE_USER; secure object: FilterInvocation: URL: /company/list.jsf; configuration attributes: [IS_AUTHENTICATED_FULLY, ROLE_CONSYS]
2007-10-04 14:53:13,453 INFO business.security.SecurityLoggerListener -> event ---->>>>> 1191520393453
2007-10-04 14:53:13,453 INFO business.security.SecurityLoggerListener -> ---->>>>> FilterInvocation: URL: /company/list.jsf
Click in the commandButton that calls #{companyMBean.create}, the method is called but does not have any effect.
Code:
2007-10-04 14:54:23,937 INFO business.security.SecurityRoleVoter -> -------------------- checking permissions for -> /company/list.jsf
2007-10-04 14:54:23,937 INFO business.security.SecurityRoleVoter -> -------------------- returning -> 1
2007-10-04 14:54:23,937 INFO business.security.SecurityRoleVoter -> -------------------- checking permissions for -> /company/list.jsf
2007-10-04 14:54:23,937 INFO business.security.SecurityRoleVoter -> -------------------- returning -> 1
2007-10-04 14:54:23,937 INFO event.authorization.LoggerListener -> Security authorized for authenticated principal: org.acegisecurity.providers.UsernamePasswordAuthenticationToken@5a46fcdc: Username: luciano; Password: [PROTECTED]; Authenticated: true; Details: br.com.business.security.SecurityUserDetails@369fdc; Granted Authorities: ROLE_USER; secure object: FilterInvocation: URL: /company/list.jsf; configuration attributes: [IS_AUTHENTICATED_FULLY, ROLE_CONSYS]
2007-10-04 14:54:23,937 INFO business.security.SecurityLoggerListener -> event ---->>>>> 1191520463937
2007-10-04 14:54:23,937 INFO business.security.SecurityLoggerListener -> ---->>>>> FilterInvocation: URL: /company/list.jsf
2007-10-04 14:54:23,953 INFO business.mbeans.CompanyMBean -> create()
So, I have some questions:
1) why my SecurityRoleVoter is being called twice?
2) how can I intercept the navigation?
Thanks.