Skip to content

Beangle Security API 调用说明 ​

模块总览 ​

模块包名功能说明
Contextorg.beangle.security.context安全上下文管理
Sessionorg.beangle.security.session会话管理
Realmorg.beangle.security.realm认证领域
Weborg.beangle.security.webWeb 安全支持

Context 模块 ​

org.beangle.security.context - 提供安全上下文管理功能。

功能说明 提供安全上下文的获取、设置和清除功能,用于在应用中访问当前用户的安全信息。

主要 API

API功能描述使用示例
SecurityContext安全上下文SecurityContext.get
SecurityContext.set设置安全上下文SecurityContext.set(ctx)
SecurityContext.clear清除安全上下文SecurityContext.clear()

常用场景示例

获取安全上下文 ​

scala
import org.beangle.security.context.SecurityContext

val ctx = SecurityContext.get
if (ctx.isValid) {
  val session = ctx.session.get
  println(s"User: ${session.id}")
  println(s"Request: ${ctx.request}")
}

设置安全上下文 ​

scala
import org.beangle.security.context.SecurityContext
import org.beangle.security.session.DefaultSession

val session = new DefaultSession("user123", Map("name" -> "John"))
val ctx = new SecurityContext(Some(session), request, root = false, None)
SecurityContext.set(ctx)

清除安全上下文 ​

scala
SecurityContext.clear()

Session 模块 ​

org.beangle.security.session - 提供会话管理功能。

功能说明 提供会话的创建、更新、删除和查询功能,支持多种会话存储方式。

主要 API

API功能描述使用示例
Session会话接口session.id
DefaultSession默认会话实现new DefaultSession(id, info)
SessionRepo会话仓库接口repo.create(id, info)
CacheSessionRepo缓存会话仓库new CacheSessionRepo(cacheManager)
HttpSessionRepoHTTP 会话仓库new HttpSessionRepo()
DBSessionRegistry数据库会话注册表new DBSessionRegistry(dataSource)
DBSessionCleaner数据库会话清理器new DBSessionCleaner(dataSource)

常用场景示例

创建会话 ​

scala
import org.beangle.security.session.cache.CacheSessionRepo

val sessionRepo = new CacheSessionRepo(cacheManager)
val session = sessionRepo.create("user123", Map(
  "name" -> "John",
  "email" -> "john@example.com"
))

获取会话 ​

scala
val session = sessionRepo.get("session123")
session.foreach { s =>
  println(s"User: ${s.id}")
  println(s"Info: ${s.info}")
}

更新会话 ​

scala
session.foreach { s =>
  val updated = s.copy(info = s.info + ("lastAccess" -> System.currentTimeMillis()))
  sessionRepo.update(updated)
}

删除会话 ​

scala
sessionRepo.remove("session123")

查询用户会话 ​

scala
val sessions = sessionRepo.getByKey("user123")
sessions.foreach { s =>
  println(s"Session: ${s.id}")
}

使用数据库会话 ​

scala
import org.beangle.security.session.jdbc.DBSessionRegistry

val registry = new DBSessionRegistry(dataSource)
val session = registry.create("user123", Map("name" -> "John"))
registry.update(session)

清理过期会话 ​

scala
import org.beangle.security.session.jdbc.DBSessionCleaner

val cleaner = new DBSessionCleaner(dataSource)
cleaner.clean()

Realm 模块 ​

org.beangle.security.realm - 提供认证领域功能。

功能说明 提供多种认证方式,包括 JWT、OAuth、LTPA 等。

主要 API

API功能描述使用示例
JwtsJWT 工具类Jwts.builder()
JwtDigestJWT 摘要new JwtDigest(key)
ClaimsJWT 声明new Claims()
OAuthHelperOAuth 辅助类OAuthHelper.buildUrl()
OAuthConfigOAuth 配置new OAuthConfig()
LtpaTokenLTPA 令牌new LtpaToken()
LtpaTokenGeneratorLTPA 令牌生成器new LtpaTokenGenerator()

常用场景示例

JWT 生成和验证 ​

scala
import org.beangle.security.realm.jwt.Jwts
import javax.crypto.SecretKey

val key = Jwts.SIG.HS256.key.build()

val token = Jwts.builder()
  .subject("user123")
  .claim("name", "John")
  .claim("email", "john@example.com")
  .signWith(key)
  .compact()

val claims = Jwts.parser()
  .verifyWith(key)
  .build()
  .parseSignedClaims(token)
  .getPayload()

println(s"Subject: ${claims.getSubject}")
println(s"Name: ${claims.get("name")}")

OAuth 认证 ​

scala
import org.beangle.security.realm.oauth.{OAuthHelper, OAuthConfig}

val config = OAuthConfig(
  clientId = "client_id",
  clientSecret = "client_secret",
  redirectUri = "http://localhost:8080/callback",
  scope = "openid profile email"
)

val authUrl = OAuthHelper.buildUrl(config)

LTPA 令牌生成 ​

scala
import org.beangle.security.realm.ltpa.{LtpaTokenGenerator, LtpaConfig}

val config = LtpaConfig(
  sharedKey = "shared_key",
  expiration = 3600
)

val generator = new LtpaTokenGenerator(config)
val token = generator.generate("user123")

Web 模块 ​

org.beangle.security.web - 提供 Web 安全支持。

功能说明 提供 Web 应用的安全过滤器和拦截器,支持认证和授权。

主要 API

API功能描述使用示例
WebSecurityManagerWeb 安全管理器new WebSecurityManager()
SecurityFilter安全过滤器new SecurityFilter()
SecurityInterceptor安全拦截器new SecurityInterceptor()
AuthorizationFilter授权过滤器new AuthorizationFilter()
AccessDeniedHandler访问拒绝处理器new AccessDeniedHandler()
EntryPoint认证入口点new EntryPoint()
SessionIdPolicy会话 ID 策略new CookieSessionIdPolicy()
SessionId会话 IDSessionId(request)

常用场景示例

配置安全过滤器 ​

scala
import org.beangle.security.web.SecurityFilter

val filter = new SecurityFilter()
filter.setSecurityManager(securityManager)
filter.setEntryPoint(entryPoint)
filter.setAccessDeniedHandler(accessDeniedHandler)

会话 ID 管理 ​

scala
import org.beangle.security.web.session.{SessionId, CookieSessionIdPolicy}

val policy = new CookieSessionIdPolicy()
val sessionId = SessionId(request)
val id = policy.read(request)

访问控制 ​

scala
import org.beangle.security.web.access.SecurityInterceptor

val interceptor = new SecurityInterceptor()
interceptor.setSecurityManager(securityManager)

if (interceptor.preHandle(request, response)) {
  // 继续处理请求
} else {
  // 访问被拒绝
}

最佳实践 ​

会话管理 ​

  • 合理设置会话过期时间
  • 使用安全的会话 ID 生成策略
  • 定期清理过期会话
  • 监控会话使用情况

认证安全 ​

  • 使用强密码策略
  • 实现密码加密存储
  • 支持多因素认证
  • 定期更新认证令牌

授权控制 ​

  • 实现最小权限原则
  • 使用基于角色的访问控制
  • 定期审计权限分配
  • 记录授权决策

Web 安全 ​

  • 使用 HTTPS 保护通信
  • 实现 CSRF 防护
  • 设置安全响应头
  • 防止 XSS 攻击

令牌管理 ​

  • 使用安全的密钥管理
  • 设置合理的令牌过期时间
  • 实现令牌刷新机制
  • 监控令牌使用情况