2 Stimmen

Wie man mit Spring Security auf eine zugriffsverweigerte Seite umleitet

Ich habe eine Anwendung mit JSF+Spring. Wenn ich jedoch versuche, eine gesicherte Seite ohne Authentifizierung zu erreichen, anstatt mich auf die verweigerte Seite umzuleiten, wird nur die Seite 403 Forbidden angezeigt. Ich weiß nicht, ob es anyting fehlt auf applicationContext oder web.xml, hier ist mein Code:

Teil von applicationContext:

<sec:http access-denied-page="/denied.xhtml"  auto-config="true" use-expressions="false" >
    <sec:form-login login-page="/login.xhtml" default-target-url="/"   authentication-failure-url="/denied.xhtml"
    login-processing-url="/static/j_spring_security_check"
    />
    <sec:intercept-url pattern="/PANEL/**"  access="ROLE_GENERALT"></sec:intercept-url>
    <sec:logout invalidate-session="true" logout-url="/index.xhtml"/>
    </sec:http>

<sec:global-method-security secured-annotations="enabled" jsr250-annotations="enabled"></sec:global-method-security>

und web.xml:

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:/appContext.xml
        </param-value>
    </context-param>
    <filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

</filter>

<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>FORWARD</dispatcher>
  <dispatcher>REQUEST</dispatcher>
</filter-mapping>

12voto

Ravi Kadaboina Punkte 8464

Sie müssen die Eigenschaft errorpage für den accessDeniedHandler festlegen, der von ExceptionTranslationFilter verwendet wird, wenn eine AccessDeniedException auftritt

siehe dies für Informationen Link

<bean id="exceptionTranslationFilter" class="org.springframework.security.web.access.ExceptionTranslationFilter">
  <property name="authenticationEntryPoint" ref="authenticationEntryPoint"/>
  <property name="accessDeniedHandler" ref="accessDeniedHandler"/>
</bean>

<bean id="accessDeniedHandler" class="org.springframework.security.web.access.AccessDeniedHandlerImpl">
  <property name="errorPage" value="/denied.xhtml"/>
</bean>

alternativ können Sie auch Folgendes in Ihre web.xml einfügen

<error-page>
  <error-code>403</error-code>
  <location>/pages/denied.xhtml</location>
</error-page>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X