Toho může být docela dost, každopádně byste měl mít v chainu filtrů
nakonfigurovaný "authenticationProcessingFilter" odkazující se na
class org.acegisecurity.ui.webapp.AuthenticationProcessingFilter, dále
"filterInvocationInterceptor" s třídou
org.acegisecurity.intercept.web.FilterSecurityInterceptor a nbakonec
"exceptionTranslationFilter" s třídou
org.acegisecurity.ui.ExceptionTranslationFilter.

Prvně jsmenovaný filtr zajišťuje, že se zalogujete v případě že zadáte
v přihlašovacím formuláři uživatelské údaje. Druhý filtr zajišťuje, že
pokud přistupujete na chráněný resource (nakonfigurováno v
definitionSourceMaintainer) a nejste přihlášený (v SecurityContextu
není objekt Authentication) budete vyhozena exception, kterou zpracuje
třetí jmenovaný filtr a přesměruje uživatele na přihlašovací stránku.

u mě konfigurace vypadá následovně:

<bean id="authenticationProcessingFilter"
class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter">
                <property name="authenticationManager" 
ref="authenticationManager"/>
                <property name="authenticationFailureUrl" 
value="/secure/loginFailure.do"/>
                <property name="defaultTargetUrl" value="/homepage.do"/>
                <property name="filterProcessesUrl" 
value="/secure/performLogin.do"/>
                <property name="rememberMeServices" 
ref="nullRememberMeServices"/>
                <property name="forwardWhenFailure" value="false"/>
</bean>

<bean id="filterInvocationInterceptor"
class="org.acegisecurity.intercept.web.FilterSecurityInterceptor">
                <property name="authenticationManager" 
ref="authenticationManager"/>
                <property name="definitionSourceMaintainer"
ref="patternSecurityDefinitionSourceMantainer"/>
                <property name="accessDecisionManager">
                        <bean class="org.acegisecurity.vote.AffirmativeBased">
                                <property name="allowIfAllAbstainDecisions" 
value="false"/>
                                <property name="decisionVoters">
                                        <list>
                                                <ref bean="authenticatedVoter"/>
                                        </list>
                                </property>
                        </bean>
                </property>
        </bean>

<bean id="exceptionTranslationFilter"
class="org.acegisecurity.ui.ExceptionTranslationFilter">
                <property name="authenticationEntryPoint">
                        <bean 
class="com.fg.user.cps.filter.SelfAwareRelocationAuthenticationProcessingFilterEntryPoint">
                                <property name="loginFormUrl" 
value="/secure/loginDialog.do"/>
                                <property name="forceHttps" value="true"/>
                                <property name="urlProcessor" 
ref="urlProcessor"/>
                        </bean>
                </property>
                <property name="accessDeniedHandler" ref="accessDeniedHandler"/>
        </bean>

Bean je v konfiguraci samozřejmě víc, ale uvedl jsem jen ty základní.
Filtry musí být uvedeny v tomto pořadí v základním delegating filtru,
aby správně fungovaly.

Honza N.

2008/1/23, [EMAIL PROTECTED] <[EMAIL PROTECTED]>:
>
> Máme malou webovou aplikaci používající Spring.
> Po jednoduchém přihlášení přidáváme atribut 'user' do  session a pro
> neoprávněný
> přístup (uhádnutí adresy) máme na každé jsp (kromě loginu) tento kód
>
> <c:if test="${sessionScope.user == null}">
> <c:redirect url="/Login.do"></c:redirect>
> </c:if>
>
> No a teď jsme začali používat Acegi - zadařilo se a můžeme používat na jsp
> stránkách
> <authz:authorize> značky.
>
> Ale bohužel teď použití 'uhodnuté' adresy bez přihlášení jde do chyby:
>
> org.acegisecurity.AuthenticationCredentialsNotFoundException:
> An Authentication object was not found in the SecurityContext
> at org.acegisecurity.intercept.AbstractSecurityInterc
> eptor.credentialsNotFound(AbstractSecurityIntercep tor.java:375)
> at org.acegisecurity.intercept.AbstractSecurityInterc
> eptor.beforeInvocation(AbstractSecurityInterceptor .java:288)
> at org.acegisecurity.intercept.web.FilterSecurityInte
> rceptor.invoke(FilterSecurityInterceptor.java:104)
> at org.acegisecurity.intercept.web.FilterSecurityInte
> rceptor.doFilter(FilterSecurityInterceptor.java:72 )
> at org.acegisecurity.util.FilterChainProxy$VirtualFil
> terChain.doFilter(FilterChainProxy.java:275)
> ...........
>
> Netušíte, co může chybět v konfiguračním xml ?
>
> Díky.


-- 
--------------------------------------------------------------
Ing. Jan Novotný
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
http://blog.novoj.net
Myšlenky dne otce Fura
--------------------------------------------------------------

Odpovedet emailem