【发布时间】:2018-06-10 01:55:33
【问题描述】:
我正在尝试使用 Spring Security 实现一个简单的登录(我是 Spring Security 的新手)。我从 Spring Security 参考开始,其中包含一个简单的“Hello world”示例 (link)。我在 Eclipse 中准备了一个 web 项目(带有 EAR 项目),文件结构如下所示:
SecurityConfig 和 SecurityWebApplicationInitializer 类与上面链接中的类相同(“Hello world”示例)。我还添加了 Log4j 2 配置文件和主页(login.xhtml),(现在)只打印“test”。稍后它将用作自定义登录页面。
web.xml 只包含一个welcome-file 元素:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>SpringSecurity</display-name>
<welcome-file-list>
<welcome-file>pages/login.xhtml</welcome-file>
</welcome-file-list>
</web-app>
EAR 的部署程序集如下所示:
我在JBoss AS 7.1.1上部署EAR时没有报错,但是当我访问http://localhost:8080/SpringSecurity时,我的主页正常显示。
我猜上面的配置应该会生成一个默认的登录页面。当我访问我的主页时,应该会出现该登录页面,对吗?看起来 Spring Security 甚至没有加载,访问我的主页时也没有保护。
我真的不明白为什么这个简单的例子不起作用。有什么帮助吗?
【问题讨论】:
-
@dur 我已经在
SecurityConfig中添加了一些日志记录。没有任何记录,也没有达到断点。所以看起来配置甚至没有加载 - 不知道为什么。 -
@dur 不,不是,我已经检查过了。
-
@dur 是的,JBoss 7 支持 Java Servlet 3.1。还尝试在 Tomcat 8.5 (Java Servlet 3.1) 上进行 WAR 部署 - 不走运。
-
我认为您缺少 configure(HttpSecurity http) :请参阅mkyong.com/spring-security/…
-
我认为,您的 spring jar 不适用于(在类路径中)您的战争。只需检查并确认“ear-subdeployments-isolated”属性设置为“false”。参考 - docs.jboss.org/author/display/AS7/Class+Loading+in+AS7
标签: java spring eclipse spring-mvc spring-security