2012-01-05 6 views
0

Как добавить @Secure annoatation в методе контроллера и запустить его? Теперь, когда я запускаю его получил исключение, как:Как добавить примечание @secure в весенней безопасности

org.springframework.beans.factory.BeanCreationException: Ошибка создания боб с именем «companyController» определены в файле [C: \ рабочее пространство \ ГНС \ SpringSource \ VFabric -tc-server-developer-2.6.1.RELEASE \ spring-insight-instance \ wtpwebapps \ BillingEngine \ WEB-INF \ classes \ com \ sesami \ common \ management \ web \ controller \ CompanyController.class]: Инициализация компонента не выполнена ; Вложенное исключение - org.springframework.aop.framework.AopConfigException: Неожиданное исключение АОП; Вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean с именем 'org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor # 0': не удается разрешить ссылку на bean 'accessDecisionManager' при настройке bean-свойства 'accessDecisionManager «; Вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: нет bean с именем 'accessDecisionManager' определяется org.apache.catalina.core.StandardContext.listenerStart (StandardContext.java:4723) на org.apache.catalina.core. StandardContext $ 1.call (StandardContext.java at java.lang.Thread.run (Неизвестный источник) Вызвано: org.springframework.aop.framework.AopConfigException: Неожиданное исключение АОП; вложенное исключение - org.springframework.beans.factory. BeanCreationException: Ошибка создания bean-компонента с именем «org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor # 0»: не удается разрешить ссылку на bean-accessDecisionManager при настройке bean-свойства «accessDecisionManager», вложенное исключение - на ... еще 19

У меня есть пружинная .xml SECURITY

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd «>

<global-method-security secured-annotations="enabled"> 
<!-- 
<protect-pointcut access="ROLE_ADMIN" 
     expression="execution(* com.sesami.common.management.web.controller.AdminController.*(..))" /> 
     --> 
</global-method-security> 

<!-- URL pattern based security --> 
<http auto-config="false" entry-point-ref="authenticationEntryPoint" 
    use-expressions="true"> 
    <custom-filter ref="authenticationFilter" position="FORM_LOGIN_FILTER" /> 
    <intercept-url access="hasRole('ROLE_ADMIN')" pattern="/common/admin/**" /> 
    <intercept-url pattern="/common/accounting/**" access="hasRole('ROLE_USER')" /> 
    <intercept-url pattern="/common/billing/**" access="hasRole('ROLE_COMPANY')" /> 
    <logout logout-success-url="/" logout-url="/logout"/> 

</http>......... 

И в контроллере я добавляю следующее:

@Secure("ROLE_ADMIN") 
@RequestMapping(value = "/common/admin/addAdmin", method = RequestMethod.GET) 
    public String add(ModelMap map) { 
     map.addAttribute(new Administrator()); 
     return "/common/admin/addAdmin"; 
    } 

Нужно ли мне конфигурировать или импортировать какой-либо класс?

ответ

1
Cannot resolve reference to bean 'accessDecisionManager' while setting bean property 'accessDecisionManager'; nested exception is 
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'accessDecisionManager' is defined 

Spring следует создавать AccessDecisionManager по умолчанию для вас, но, похоже, что не происходит, вероятно, из-за какой-то проблемы с конфигурацией. Просто для того, чтобы делать то, что произойдет, если вы установите auto-config в true в вашем конфиге http?

0
<bean id="accessDecisionManager" class="org.springframework.security.access.vote.UnanimousBased" xmlns="http://www.springframework.org/schema/beans"> 
    <constructor-arg> 
     <list> 
      <bean class="org.springframework.security.oauth2.provider.vote.ScopeVoter" /> 
      <bean class="org.springframework.security.access.vote.RoleVoter" /> 
      <bean class="org.springframework.security.access.vote.AuthenticatedVoter" /> 
     </list> 
    </constructor-arg> 
</bean> 

вы должны определить этот компонент.

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