Spring Security Java 示例

2025 年 3 月 18 日 | 3 分钟阅读

Spring Framework 在 Spring 3.1 中添加了 Java 配置支持。在 Spring Security 中,Java 配置被添加到 Spring Security 3.2 中,这使我们能够在不编写单行 XML 的情况下配置 Spring Security。

在这里,我们将创建一个示例,该示例实现 Spring Security 并在不使用 XML 的情况下进行配置。它包括以下步骤。

步骤 1

第一步是创建 Spring Security Java 配置。 一个简单的基本 Java 配置如下所示。

WebSecurityConfig.java

此配置创建一个名为 springSecurityFilterChain 的 Servlet 过滤器。 它负责保护应用程序 URL、验证提交的用户名和密码、重定向到登录表单等。

上面的 Java 配置为我们的应用程序执行以下操作。

  • 要求每个 URL 都进行身份验证
  • 创建一个登录表单
  • 允许用户使用基于表单的身份验证进行身份验证
  • 允许注销
  • 防止 CSRF 攻击
  • 安全标头集成等

步骤 2

现在,我们将使用 war 注册 springSecurityFilterChain。 要注册,Spring Security 提供了一个基类 AbstractSecurityWebApplicationInitializer,我们需要扩展该基类。

对于 Spring MVC 应用程序,SecurityWebApplicationInitializer 看起来像下面这样。

SecurityWebApplicationInitializer.java

此代码将为我们应用程序中的每个 URL 注册 springSecurityFilterChain。

步骤 3

现在,在现有的 ApplicationInitializer 中加载 WebSecurityConfig,并将其添加到 getRootConfigClasses() 方法中。

MvcWebApplicationInitializer.java

步骤 4

WebSecurityConfigurerAdapter 类提供了一个 configure(HttpSecurity http) 方法,其中包含以下默认配置。 默认定义如下所示。

它类似于给定的 XML。

此方法执行以下操作。

  • 它确保用户发出的每个请求都需要用户进行身份验证
  • 它允许用户使用基于表单的登录进行身份验证
  • 它允许用户使用 HTTP 基本身份验证进行身份验证

步骤 5

创建一个控制器来处理用户请求。

HomeController.java

我们有一个视图 (.jsp) 页面 index.jsp,其中包含以下源代码。

我们的完整项目如下所示。

Spring Security Java Example

输出

我们的控制器中只有一个操作,只有经过身份验证的用户才能访问它。 因此,当我们运行该应用程序时,它会提示输入登录凭据。 输出如下所示。

Spring Security Java Example 1

这是 Spring Security 提供的默认登录页面,我们没有创建它。 尽管我们可以创建自己的登录页面并使用应用程序进行配置。 我们将在接下来的主题中进行此操作。

好吧,现在,提供登录凭据以进入应用程序资源。 Spring Security 验证用户凭据,并确保用户是经过身份验证的。

让我们看看,如果我们输入错误的凭据会发生什么?

Spring Security Java Example 2

单击登录按钮后,它会抛出 Bad Credentials 错误。

Spring Security Java Example 3

现在,使用正确的凭据登录。

Spring Security Java Example 4

这次凭据匹配并显示我们的主页 (index.jsp)。

Spring Security Java Example 5