Как добавить аннотацию @secure в Spring Security - PullRequest
0 голосов
/ 05 января 2012

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

org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем companyController, определенного в файле [C: \ workspace \ sts \ 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: неожиданное исключение AOP; вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor # 0': невозможно разрешить ссылку на бин «accessDecisionManager» бина при установке свойства bean «; вложенным исключением является org.springframework.beans.factory.NoSuchBeanDefinitionException: не определен бин с именем 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: неожиданное исключение AOP; вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor # 0': невозможно разрешить ссылку на бин «accessDecisionManager» бина при установке свойства bean «; Вложенное исключение в ... еще 19

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

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:context="http://www.springframework.org/schema/context"
    xmlns="http://www.springframework.org/schema/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        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";
    }

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

Ответы [ 2 ]

1 голос
/ 05 января 2012
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 по умолчанию, но, похоже, этого не происходит, возможно, из-за проблем с конфигурацией. Просто для удовольствия, что произойдет, если вы установите для автоматической конфигурации значение true в конфигурации http?

0 голосов
/ 15 августа 2014
<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>

Вы должны определить этот боб.

...