【发布时间】:2012-02-03 11:47:36
【问题描述】:
如何在控制器的方法中添加@Secure注解并使其运行? 现在,当我运行它时,出现如下异常:
org.springframework.beans.factory.BeanCreationException:创建文件 [C:\workspace\sts\springsource\vfabric-tc-server-developer-2.6.1.RELEASE\spring- 中定义的名称为“companyController”的 bean 时出错insight-instance\wtpwebapps\BillingEngine\WEB-INF\classes\com\sesami\common\management\web\controller\CompanyController.class]:bean 初始化失败;嵌套异常是 org.springframework.aop.framework.AopConfigException: Unexpected AOP exception;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名称为“org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor#0”的 bean 时出错:设置 bean 属性“accessDecisionManager”时无法解析对 bean“accessDecisionManager”的引用';嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义名为“accessDecisionManager”的 bean org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723) 在 org.apache.catalina.core.StandardContext$1.call(StandardContext.java 在 java.lang.Thread.run(未知来源) 引起:org.springframework.aop.framework.AopConfigException:意外的AOP异常;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名称为“org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor#0”的 bean 时出错:设置 bean 属性“accessDecisionManager”时无法解析对 bean“accessDecisionManager”的引用';嵌套异常在 ... 19 个以上
我有 spring security .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";
}
我需要配置或导入一些类吗?
【问题讨论】:
标签: java xml spring annotations spring-security