无需登录! 🎉
在开发环境下,所有 API 端点和 Swagger UI 都是完全开放的,无需任何认证。
直接访问以下 URL,无需登录:
- Swagger UI: http://localhost:8080/swagger-ui.html
- API 文档: http://localhost:8080/api-docs
- 健康检查: http://localhost:8080/actuator/health
- 所有 API 端点: http://localhost:8080/api/v1/**
启用 JWT 认证,需要:
- 先调用登录接口获取 Token
- 在请求头中携带
Authorization: Bearer <token>
# 方式 1: 通过环境变量
export SPRING_PROFILES_ACTIVE=dev
mvn spring-boot:run -pl db-sync-api
# 方式 2: 通过 Maven 参数
mvn spring-boot:run -pl db-sync-api -Dspring-boot.run.profiles=dev
# 方式 3: 在 IDEA 中设置
# Run -> Edit Configurations -> Active profiles: dev# 方式 1: 通过环境变量
export SPRING_PROFILES_ACTIVE=prod
mvn spring-boot:run -pl db-sync-api
# 方式 2: 通过 Maven 参数
mvn spring-boot:run -pl db-sync-api -Dspring-boot.run.profiles=prod位置: db-sync-api/src/main/java/com/dbsync/api/config/SecurityConfig.java
@Bean
@Profile("dev")
public SecurityFilterChain devSecurityFilterChain(HttpSecurity http) {
http
.csrf(AbstractHttpConfigurer::disable)
.authorizeHttpRequests(auth -> auth
.anyRequest().permitAll() // 所有请求都允许
);
return http.build();
}@Bean
@Profile("!dev")
public SecurityFilterChain prodSecurityFilterChain(HttpSecurity http) {
http
.csrf(AbstractHttpConfigurer::disable)
.authorizeHttpRequests(auth -> auth
// 公开端点
.requestMatchers(
"/api/v1/auth/**",
"/swagger-ui/**",
"/api-docs/**",
"/actuator/health",
"/actuator/info"
).permitAll()
// 其他端点需要认证
.anyRequest().authenticated()
);
return http.build();
}启动应用后,查看日志:
The following 1 profile is active: "dev"
# 访问 Swagger UI
curl http://localhost:8080/swagger-ui.html
# 访问健康检查
curl http://localhost:8080/actuator/health
# 应该都能正常访问,不会返回 401 Unauthorized根据实施路线图,接下来会实现:
- 登录接口 (
POST /api/v1/auth/login) - Token 刷新 (
POST /api/v1/auth/refresh) - 登出接口 (
POST /api/v1/auth/logout)
- 用户实体和 Repository
- 用户注册和管理
- 密码加密 (BCrypt)
- 基于角色的访问控制 (RBAC)
- 角色: SUPER_ADMIN, TENANT_ADMIN, OPERATOR, VIEWER
- 方法级权限控制 (
@PreAuthorize)
app:
security:
jwt:
secret: ${JWT_SECRET:your-secret-key-change-in-production}
expiration: 3600000 # 1 hour
refresh-expiration: 604800000 # 7 days- ✅ 开发环境: 可以禁用认证,方便开发调试
- ❌ 生产环境: 必须启用完整的认证和授权机制
- 🔐 JWT Secret: 生产环境必须使用强密钥
- 🚫 CSRF: 生产环境建议启用 CSRF 保护
- 🔒 HTTPS: 生产环境必须使用 HTTPS
A: 因为当前使用的是 dev profile,安全配置允许所有请求通过。
A: 切换到非 dev profile (如 prod),并实现 JWT 认证功能。
A:
- 设置环境变量
SPRING_PROFILES_ACTIVE=prod - 配置 JWT Secret:
JWT_SECRET=your-strong-secret-key - 实现登录接口和 JWT 过滤器 (Week 5-6)
创建时间: 2025-10-31 适用版本: Phase 1 Week 3-4 状态: ✅ 开发环境认证已禁用,Swagger UI 可直接访问