弹簧安全&弹簧-MVC配置(spring-security & spring-mvc configu

2019-10-19 05:32发布

我写使用弹簧的安全性和弹簧-MVC与注释基于配置(@Secured)小的web应用。 为了有工作,我不得不分头行动弹簧安全配置:

APP-context.xml中(包括在web.xml中的contextConfigLocation的)

<security:http auto-config="true"/>

APP-servlet.xml中(弹簧MVC的DispatcherServlet负载的情况下)

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

我为什么要拆分这些吗? 当我把所有的安全配置在app-context.xml中的@Secured注解似乎被忽略,所以你不需要进行登录访问@Secured控制器方法。

当我把它们都放在APP-servlet.xml中以下异常升高...

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'springSecurityFilterChain' is defined
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:504)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1041)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:273)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1008)
        at org.springframework.web.filter.DelegatingFilterProxy.initDelegate(DelegatingFilterProxy.java:217)
        at org.springframework.web.filter.DelegatingFilterProxy.initFilterBean(DelegatingFilterProxy.java:145)
        at org.springframework.web.filter.GenericFilterBean.init(GenericFilterBean.java:179)

我不明白这一点:/

Answer 1:

在后一种情况下, <security:http />元素可能不是定义的XML模式的一部分。 因此,它可能得到的例外。 顺便说一句,有什么异常?

在前一种情况下,它没有工作。 可能是因为春季会在通过DispatcherServlet的加载XML配置此元素,否则忽略它。 我也不清楚,但似乎喜欢它。 :)

看看这个春天论坛主题 。 他们正在讨论的一样。 概括起来,“在* -servlet.xml后缀豆不从主背景可见”。



Answer 2:

<security:http .../>必须在声明configContextLocation的配置。 它不能在声明...-servlet.xml ,因为请求处理识别目标的servlet之前应该可以期间。

<security:global-method-security .../>据我所知)寄存器A豆后处理器,其被应用到其中声明它的上下文(即,在声明时configContextLocation的XML,它被施加到豆宣布在那里,而不是在声明的豆...-servlet.xml



Answer 3:

在处女,主要配置由定义org.eclipse.virgo.web.dm.ServerOsgiBundleXmlWebApplicationContext
在web.xml,所以我不得不导入安全配置到applicationContext.xml中,而不是* -servlet.xml后缀
<import resource="applicationContext-security.xml"/>
该固定
No bean named 'springSecurityFilterChain' is defined



Answer 4:

你应该能够在一个XML兼得,只要确保纲要正确声明。 我已经在这两个弹簧2.5和Spring 3使用他们在同一个文件中。

当你说这不工作这两个文件中的时候,我假定你的意思是没有安全应用到你的方法调用? 如果是这样的话,请确保您的应用程序加载,并通过Spring使用这些类,如果将应用不是没有保障。 例如,如果你访问类为:

MyClass instance = new MyClass();
instance.doSomething();

如果DoSomething的()与安全性的注解,什么都不会对注释作出反应。 也是一样,如果你使用它从一个servlet未通过弹簧等注入

如果这是没有帮助的,你可以澄清你的问题?



文章来源: spring-security & spring-mvc configuration