2013-12-23 3 views
1

Я пытаюсь настроить мой весенний mvc webapp, чтобы использовать пружинный обработчик отказа, но не может заставить его поймать ошибки. Используя мои конфигурации, похоже, что Spring относится к обработчику отказа доступа, но по какой-то причине, когда выполняется мой обработчик отказа в доступе, я получаю 404, который не найден. Статус HTTP 404 -/accessDenied.spring security 404 for access-denied-handler

Может кто-нибудь, пожалуйста, помогите мне узнать, что здесь может быть неправильным? Я, безусловно, есть JSP с именем accessDenied.jsp


<!-- Resources --> 
<intercept-url pattern="/resources/css/*" access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
<intercept-url pattern="/resources/images/*" access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
<intercept-url pattern="/resources/js/*" access="IS_AUTHENTICATED_ANONYMOUSLY" /> 

<!-- Pages --> 
<intercept-url pattern="/login" access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
<intercept-url pattern="/accessDenied" access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
<intercept-url pattern="/welcome" access="ROLE_LEVEL7" /> 
<intercept-url pattern="/priceOverride" access="ROLE_LEVEL7" /> 

<!-- Error handlers --> 
<access-denied-handler ref="accessDeniedHandler" /> 

Тогда в моем MVC-диспетчерский-сервлет ...

<context:component-scan base-package="com.company.reporting.controller" /> 
    <bean id="accessDeniedHandler" 
     class="com.company.reporting.handler.ReportingAccessDeniedHandler"> 
     <property name="accessDeniedUrl" value="/accessDenied" /> 
    </bean> 
    <bean 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix"> 
      <value>/WEB-INF/pages/</value> 
     </property> 
     <property name="suffix"> 
      <value>.jsp</value> 
     </property> 
    </bean> 
    <mvc:resources mapping="/resources/**" location="/resources/" />  
    <mvc:annotation-driven /> 

enter image description here

спасибо

ответ

0

Я решил, что мне не нужно переопределять обработчик отказа по умолчанию. Поэтому вместо внедрения обработчика все, что я сделал, это добавить это в мою конфигурацию безопасности ...

<access-denied-handler error-page="/accessDenied.htm"/> 
1

Создание accessDeniedHandler bean недостаточно. Этот компонент будет просто перенаправлять запрос на/accessDenied URL. Вы должны также создать AccessDeniedController (или назовите это то вроде этого) с помощью следующего кода:

@Controller 
public class AccessDeniedController { 

    @RequestMapping(value = "/accessDenied") 
    public String handleAccessDenied(){ 
     return "accessDenied"; 
    } 
} 

и положить его в пакет «com.company.reporting.controller».

Смежные вопросы