尝试使用 Jersey 来实现 Spring Security 我的 security-context.xml 文件有什么问题?

发布于 2024-12-20 02:03:03 字数 809 浏览 1 评论 0 原文

我正在尝试将 Spring Security 添加到我的 Jersey Web 应用程序中。我尝试使用以下内容作为我的 security-context.xml 文件以及现有的 applicationContext.xml (web.xml 中 contextConfigLocation 的 2 个单独文件):

http://snipt.org/OIh

基于此处提供的解决方案:Jersey REST 服务上的用户身份验证

但是启动 tomcat 后...我得到出现以下错误:

严重:将上下文初始化事件发送到类 org.springframework.web.context.ContextLoaderListener 的侦听器实例时发生异常 org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:ServletContext 资源 [/META-INF/securityContext.xml] 中的 XML 文档中的第 11 行无效;嵌套异常为 org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: 匹配通配符严格,但找不到元素“security:global-method-security”的声明。

有人可以帮我看看出了什么问题吗?

I am trying to add Spring Security to my Jersey Webapp. I tried using the following as my security-context.xml file in addition with my existing applicationContext.xml (2 separate files for contextConfigLocation in web.xml):

http://snipt.org/OIh

based on a solution provided here: User authentication on a Jersey REST service

However upon starting tomcat... I get the following error:

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 11 in XML document from ServletContext resource [/META-INF/securityContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'security:global-method-security'.

Can someone help me what is wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑看君怀她人 2024-12-27 02:03:03

您使用了:Spring Security 2 命名空间,但元素“security:global-method-security”是 Spring Security 3 的功能。

如果您使用 Spring Security 3(需要 Spring 3),则更新两个命名空间:Spring 命名空间(您使用 Spring 2.5 命名空间)和 Spring Security 命名空间。

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:security="http://www.springframework.org/schema/security"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    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.4.xsd
        http://www.springframework.org/schema/util
          http://www.springframework.org/schema/util/spring-util.xsd">

如果您确实必须使用 spring security 2.0,那么您不能使用元素“security:global-method-security”。在这种情况下,您必须显式编写隐藏在该标记之间的 bean 配置。 (但不幸的是,这是很多 bean,并且包名称已从版本 2.0 更改为版本 3.0,因此我无法提供有效的示例。)

You used: Spring Security 2 namespace but the element 'security:global-method-security' is a spring security 3 feature.

If you use Spring Security 3 (requires Spring 3) then update both namespaces, the one for Spring (you using Spring 2.5 namespace) and the Spring Security Namespace.

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:security="http://www.springframework.org/schema/security"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    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.4.xsd
        http://www.springframework.org/schema/util
          http://www.springframework.org/schema/util/spring-util.xsd">

If you really must use spring security 2.0 then you ca not use the element 'security:global-method-security`. In this case you must explicit write the bean configuration that is hidden between that tag. (But unfortunately this are a lot of beans and there package names was changed form version 2.0 to version 3.0, so I can not provide a working example.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文