# SpringSecurity 教程

> 原文： [https://howtodoinjava.com/spring-security-tutorial/](https://howtodoinjava.com/spring-security-tutorial/)

[Spring Security](https://projects.spring.io/spring-security/) 是一个框架，致力于为基于 Java EE 的企业软件应用程序提供身份验证和授权。

![Spring-Security-logo](img/dea1536af1bdecb13738ccbc1b9a5adc.jpg)

## Maven 依赖

要在基于 Maven 的项目中包含 **spring security** ，请包括以下依赖项：

`pom.xml`

```java
<repositories>
	<repository>
		<id>spring-snapshot</id>
		<name>Spring Snapshot Repository</name>
		<url>http://repo.spring.io/snapshot</url>
	</repository>
</repositories>

<dependencies>
	<dependency>
		<groupId>org.springframework.security</groupId>
		<artifactId>spring-security-web</artifactId>
		<version>4.1.1.RELEASE</version>
	</dependency>
	<dependency>
		<groupId>org.springframework.security</groupId>
		<artifactId>spring-security-config</artifactId>
		<version>4.1.1.RELEASE</version>
	</dependency>
</dependencies>

```

如果您正在使用 LDAP，OpenID 等其他功能，则还需要包括相应的[模块](https://docs.spring.io/spring-security/site/docs/4.1.1.RELEASE/reference/htmlsingle/#modules)。

如果您遇到任何导致运行时类路径问题的传递依赖问题，则可以考虑添加 spring security [BOM](https://howtodoinjava.com/maven/maven-bom-bill-of-materials-dependency/) 文件。

`pom.xml`

```java
<dependencies>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-framework-bom</artifactId>
		<version>4.3.1.RELEASE</version>
		<type>pom</type>
		<scope>import</scope>
	</dependency>
</dependencies>

```

## Gradle 依赖

要在基于 gradle 的项目中包含 Spring Security，请包含以下依赖项：

`build.gradle`

```java
repositories {
	mavenCentral()
}
dependencies {
	compile 'org.springframework.security:spring-security-web:4.1.1.RELEASE'
	compile 'org.springframework.security:spring-security-config:4.1.1.RELEASE'
}

```

## SpringSecurity 实例

以下示例详细说明了 Spring Security 的各种功能。

#### Spring Security – 登录表单示例

本教程的范围是：

*   只有授权用户才能访问编辑员工屏幕。
*   未经授权的用户应显示登录屏幕。
*   成功的凭据应转发到编辑员工屏幕。
*   不成功的凭据应转发到拒绝访问屏幕。
*   应该有一个注销应用程序的链接。

#### Spring Security – JDBC 用户服务示例

`<jdbc-user-service/>`的示例，用于从数据库中获取用户名和密码，以将用户验证为系统身份。

#### Spring Security – HTTP 基本认证示例

`<http-basic/>`的示例，用于强制用户使用基本的 HTTP 身份验证来身份验证应用程序中的任何网页或任何其他资源。

#### Spring Security – 自定义`UserDetailsS​​ervice`示例

学习扩展和使用[`UserDetailsService`](http://static.springsource.org/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/core/userdetails/UserDetailsService.html)界面，该界面用于查找任何给定用户的用户名，密码和授予的权限。

#### Spring Security – 方法级别的安全性示例 – `@PreAuthorize`和`@Secured`

了解在 Spring 应用程序中实现方法级别的安全性。

#### Spring Security – 使用 JSP Taglibs 的视图层安全性

学习在视图层中添加安全性。 当我们要根据用户的角色隐藏某些链接或按钮以使他将无法访问该功能时，通常需要使用该功能。

#### Spring Security – Spring Security 身份验证的单元测试

了解测试 Spring 身份验证技术的方法，以使系统免受外部攻击。

#### Spring Security – Siteminder 预身份验证示例

在其他任何应用程序中对用户进行预身份验证后，学习使用 Spring Security，并使用 siteminder 进入您的 Web 应用程序。

#### Spring Security – 具有保护切入点的方法级安全性

学习使用基于 XML 的安全性配置。

参考：

[Spring Security 参考](https://docs.spring.io/spring-security/site/docs/4.1.1.RELEASE/reference/htmlsingle/)