# spring-security **Repository Path**: pu13398199549/spring-security ## Basic Information - **Project Name**: spring-security - **Description**: 整合 Spring Security 6的内容! - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2026-01-09 - **Last Updated**: 2026-03-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring Security 整合项目 本项目是一个基于 Spring Security 的安全认证与授权框架,提供了完整的前后端整合示例。包含三个子模块,分别展示了不同的安全实现方式。 ## 项目结构 ``` spring-security/ ├── spring-security-init # 基础模块,简单的 Spring Security 入门示例 ├── spring-security-combine # 整合模块,集成了多种安全特性 └── spring-security-separate # 分离模块,将各组件解耦便于独立扩展 ``` ## 核心功能特性 - **用户认证**:基于用户名密码的表单认证,支持自定义登录逻辑 - **图形验证码**:集成验证码功能,防止暴力破解 - **记住我**:基于持久化令牌的记住我功能 - **权限控制**:基于角色的访问控制(RBAC),支持方法级安全注解 - **Token 认证**:支持 JWT 风格的 Token 认证(separate 模块) - **Redis 支持**:基于 Redis 的会话存储和 Token 管理(separate 模块) - **自定义异常处理**:友好的错误页面和 JSON 响应 - **CORS 配置**:跨域资源共享支持(separate 模块) ## 技术栈 - **框架**:Spring Boot 3.x + Spring Security 6.x - **数据库**:MySQL + MyBatis - **缓存**:Redis(separate 模块) - **前端**:Thymeleaf + Bootstrap 5 ## 快速开始 ### 环境要求 - JDK 17+ - Maven 3.6+ - MySQL 8.0+ - Redis 6.x+(仅 separate 模块需要) ### 数据库配置 创建数据库并执行初始化脚本: ```sql CREATE DATABASE security_demo DEFAULT CHARACTER SET utf8mb4; -- 导入各模块的表结构(位于 resources/mapper/*.xml) ``` ### 运行项目 ```bash # 编译项目 mvn clean install # 运行各模块 mvn -pl spring-security-init spring-boot:run mvn -pl spring-security-combine spring-boot:run mvn -pl spring-security-separate spring-boot:run ``` ## 模块说明 ### spring-security-init 最简单的 Spring Security 入门示例,展示了基础的认证配置。 ### spring-security-combine 完整的整合示例,包含: - 验证码认证过滤器 - 记住我功能 - 用户角色权限管理 - 自定义访问拒绝处理器 - 前端页面整合 ### spring-security-separate 组件化解耦的示例,包含: - 独立的 Token 认证过滤器 - Redis 缓存集成 - 自定义登录成功/失败处理器 - 分离的异常处理机制 - 更好的扩展性 ## API 接口 | 接口 | 方法 | 说明 | 权限要求 | |------|------|------|----------| | `/login` | GET/POST | 登录页面/登录接口 | 公开 | | `/captcha` | GET | 获取图形验证码 | 公开 | | `/hello` | GET | 测试接口 | 公开 | | `/user/list` | GET | 用户列表 | ADMIN/MANAGER | | `/user/modify` | GET | 修改用户 | ADMIN | ## 核心配置 ### 安全配置(AppConfig) ```java @Configuration public class AppConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http, PersistentTokenRepository tokenRepository) throws Exception { return http .authorizeHttpRequests(auth -> auth .requestMatchers("/login", "/captcha").permitAll() .requestMatchers("/user/modify").hasRole("ADMIN") .anyRequest().authenticated() ) .formLogin(form -> form .loginPage("/login") .successHandler(loginSuccessHandler()) .failureHandler(loginErrorHandler()) ) .rememberMe(remember -> remember .tokenRepository(tokenRepository) .tokenValiditySeconds(3600) ) .build(); } } ``` ### 用户实体(UserEntity) ```java @Data public class UserEntity implements UserDetails { private String username; @JsonIgnore private String password; private Long id; private Integer enabled; private String realName; private Set authorities; } ``` ## 前端页面 项目提供了基于 Bootstrap 5 的前端页面: - 登录页面:`/resources/templates/index.html` - 错误页面:`/resources/error/403.html` - 布局模板:`/resources/templates/layout/` ## 许可证 本项目基于 MIT 许可证开源。