applicationContext-security.xml </bean>中<bean>的目的

时间:2014-07-29 12:22:51

标签: spring-security

新手问题...在applicationContext-security.xml中的实际安全设置之前定义的bean的用途是什么?

<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
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.xsd">

3 个答案:

答案 0 :(得分:1)

因为这个文件是声明spring security配置的文件。如果你有自定义实现,那么你必须将它们作为bean注入。这与默认配置无关,但与自定义实现无关。有关自定义实现的更多详细信息,请点击此处。

http://malalanayake.wordpress.com/2014/06/30/stateless-spring-security-on-rest-api/

答案 1 :(得分:1)

此根标签允许您在文件中省略security:前缀(标准,您可以使用任何人)。例如,你会写:

<http use-expressions="true">
    <http-basic />
    <headers />
    <remember-me services-ref="rememberMeServices" />
</http>

而不是:

<security:http use-expressions="true">
    <security:http-basic />
    <security:headers />
    <security:remember-me services-ref="rememberMeServices" />
</security:http>

另一方面,你必须写:

<beans:bean id="rememberMeServices" class="org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices">
    <beans:property name="userDetailsService" ref="userDetailsService"/>
    <beans:property name="alwaysRemember" value="true"/>
    <beans:property name="key" value="${rememberMe.key}" />
</beans:bean>

而不是:

<bean id="rememberMeServices" class="org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices">
    <property name="userDetailsService" ref="userDetailsService"/>
    <property name="alwaysRemember" value="true"/>
    <property name="key" value="${rememberMe.key}" />
</bean>

总结,此security:命名空间中找到文件,而不是beans:一个(例如)。

答案 2 :(得分:1)

beans root element告诉XML解析器有关文档的内容。

通过引用将在文档中使用的不同namespaces(具有xmlns前缀的属性)来实现此目的。他们每个人都可以定义文档中允许的元素以及如何验证它。

xsi:schemaLocation建议解析器,在哪里可以找到每个命名空间的定义(XML schemas),以便它可以用于验证。

<beans:beans>中的前缀表示该元素属于哪个名称空间。每个XML文档都可以声明多个名称空间,这有助于解析器分辨哪个是元素的一部分。