当前位置: 首页 > 知识库问答 >
问题:

Spring Security初始化失败

顾乐家
2023-03-14

我正在尝试使用Spring Security实现一个简单的登录(我是Spring Security的新手)。我从Spring Security参考开始,其中包含一个简单的“Hello world”示例(链接)。我在Eclipse中准备了一个Web项目(带有EAR项目),文件结构如下所示:

SecurityConfig和SecurityWebApplicationInitializer类与上面链接(“Hello world”示例)中的类相同。我还添加了Log4j 2配置文件和主页(login.xhtml),目前只打印“test”。稍后,它将用作自定义登录页面。

<代码>web。xml仅包含欢迎文件元素:

<?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甚至没有加载,并且在访问我的主页时没有保护。

我真的不明白为什么这个简单的例子不起作用。有什么帮助吗?

共有1个答案

赵涵亮
2023-03-14

我的机器上目前没有JBoss。但是我能够在tomcat上部署这个例子。

问题当然是war类加载器在运行时无法看到spring jar。

可以有两种可能的解决方案来解决这个问题。

>

如果其他模块也需要spring JAR,那么您可以在清单中显式设置类路径条目。MF战争文件和其他需要这些JAR的模块,以便携方式。

例如。

Manifest-Version: 1.0 
Class-Path: lib/spring-beans-4.3.9.RELEASE.jar lib/spring-context-4.3.9.RELEASE.jar

以sapce分隔的方式添加所有必需的JAR(“”)。

注意:-我使用以下jars来运行此示例。

spring-aop-5.0.2.RELEASE.jar
spring-beans-5.0.2.RELEASE.jar
spring-context-5.0.2.RELEASE.jar
spring-core-5.0.2.RELEASE.jar
spring-expression-5.0.2.RELEASE.jar
spring-jcl-5.0.2.RELEASE.jar
spring-security-config-5.0.0.RELEASE.jar
spring-security-core-5.0.0.RELEASE.jar
spring-security-crypto-5.0.0.RELEASE.jar
spring-security-web-5.0.0.RELEASE.jar
spring-web-5.0.2.RELEASE.jar

使用此版本的Spring和sping-security,您可能需要对代码进行一些小的更改。

User.withDefaultPasswordEncoder().username("user").password("user").roles("USER").build(); 

User.withUsername("user").password("{noop}user").roles("USER").build();

有关所需代码更改的更多详细信息,请参阅-Spring Boot PasswordEncoder Error。

 类似资料:
  • 我在我的android应用程序中使用谷歌地图。我已经创建了密钥并在清单文件中添加了必要的权限。但很快我启动了应用程序,我在调试器中收到了这条消息: Google服务初始化失败,状态:10,缺少用于初始化Google服务的预期资源:“R.string.google_app_id”。可能的原因是缺少google-services.json或com.google.gms.google服务gradle插件

  • 我使用velocity作为Java代码生成器,我正在运行一个Eclipse应用程序,它有多个插件,不同的插件调用velocity模块进行代码生成。 每当我运行一个特定的插件时,不管我运行多少次,它都可以单独工作,现在如果我试图运行另一个插件,它会抛出速度异常(我在下面提供了堆栈跟踪),我将再次重启eclipse,其他插件也可以工作。 结论:当一个插件在某个插件已经执行后运行时,Velocity初始

  • 对于我的Android应用程序,我需要集成firebase。所以我跟着谷歌教程学习。 现在我总是在实现firebase之后 当我运行应用程序(在真实设备和模拟) 已经看到了:Firebase数据库依赖崩溃应用程序,但他正在使用旧版本... 以下是项目的分级: 有人知道该怎么做才能解决这个初始化问题吗?

  • 我正在尝试为我的代码做一个简单的csv读取,它一直工作到我今晚尝试Mac。目前是10点15分。3、卡塔琳娜。这是我的代码: 它给我的错误是:OSError:从文件初始化失败。 我尝试了多种不同的选项来读取这个csv,包括 但所有这些都给出了类似的错误。我确信有一个简单的答案,但是我还没有找到。我在终端上尝试了 sudo chown username: group filename 命令,并通过我的

  • 问题内容: 我是Visual Studio的新手。我目前正在创建一个登录表单。 我有这个代码。 但是,每当我尝试输入用户名和密码时,都会出现一个错误,提示“ 配置系统初始化失败” 。我只是想知道这是什么问题,我该如何解决? 请帮忙。 问题答案: 确保项目中的配置文件(如果是web则为web.config,如果是Windows则为app.config)以以下方式启动: 请注意,在元素内部,第一个孩子