今天我在配置 Spring Security 的OAuth是遇到了一個(gè)錯(cuò)誤:
java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?
需要注意一下幾點(diǎn):
1. 添加 spring-context 依賴
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework.version}</version>
</dependency>
2. 注冊(cè) ContextLoaderListener
修改web.xml如下
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
注意,如果使用了Log4jConfigListener,需要把ContextLoaderListener放在后面。
3. 注意Spring Servlet 名稱
參考OAuth 2 Developers Guide知道,我們需要在web.xml的securityFilterChain中添加如下配置:
<init-param>
<param-name>contextAttribute</param-name>
<param-value>org.springframework.web.servlet.FrameworkServlet.CONTEXT.spring</param-value>
</init-param>
特別需要注意的是:參數(shù)值最后的spring不是亂蓋的,它要和SpringDispatchServlet的名稱一致。