Spring Security 的使用案例
时间: 2024-02-22 13:30:45 浏览: 60
SpringSecurity架构pdf文档
下面是一个简单的 Spring Security 使用案例:
1. 引入 Spring Security 依赖
在 pom.xml 文件中添加以下依赖:
```
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
```
2. 配置 Spring Security
在 Spring 配置文件中添加以下配置:
```
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN')" />
<form-login login-page="/login" default-target-url="/home" authentication-failure-url="/login?error" username-parameter="username" password-parameter="password" />
<logout logout-success-url="/login?logout" />
<csrf />
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="admin" password="admin" authorities="ROLE_ADMIN" />
<user name="user" password="user" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
```
上述配置的含义:
- `<http>` 标签用于配置 HTTP 安全性。
- `auto-config="true"` 表示启用默认的 Spring Security 配置。
- `use-expressions="true"` 表示使用表达式进行访问控制。
- `<intercept-url>` 标签用于配置 URL 模式和访问控制规则。
- `access="hasRole('ROLE_ADMIN')"` 表示只有角色为 ROLE_ADMIN 的用户才能访问 /admin/** 的 URL。
- `<form-login>` 标签用于配置登录表单。
- `login-page="/login"` 表示登录页面的 URL。
- `default-target-url="/home"` 表示登录成功后跳转到的 URL。
- `authentication-failure-url="/login?error"` 表示登录失败后跳转到的 URL。
- `username-parameter="username"` 和 `password-parameter="password"` 表示登录表单中的用户名和密码的名称。
- `<logout>` 标签用于配置登出。
- `logout-success-url="/login?logout"` 表示登出成功后跳转到的 URL。
- `<csrf>` 标签用于防止 CSRF 攻击。
- `<authentication-manager>` 标签用于配置身份验证管理器。
- `<authentication-provider>` 标签用于配置身份验证提供程序。
- `<user-service>` 标签用于配置用户和角色。
3. 添加登录页面和首页
在 Web 应用程序中添加登录页面和首页,例如:
- 登录页面:/login.jsp
- 首页:/home.jsp
4. 测试
启动 Web 应用程序,并尝试访问以下 URL:
- /admin/**:需要 ROLE_ADMIN 角色才能访问。
- /home:需要登录才能访问。
- /login:登录页面。
输入正确的用户名和密码进行登录,然后尝试访问 /admin/** 和 /home,验证访问控制是否生效。
阅读全文