新手问题...在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">
答案 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文档都可以声明多个名称空间,这有助于解析器分辨哪个是元素的一部分。