You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

认证与应用场景用户实体架构方案咨询:该设计是否合理?

社交应用用户实体场景化架构设计咨询

背景与需求

我需要为一款带社交功能的应用做架构设计,目标是实现单一用户实体及对应的Repository,但存在两种完全不同的用户数据获取场景:

  • 认证场景:应用安全组件在认证流程中,仅需获取用户的邮箱(或用户名)、密码及角色信息,作为认证数据对象使用
  • 业务场景:应用社交组件需要获取用户的业务数据(如喜好书籍、爱好、食谱等),无需传递密码等敏感信息

现有设计方案

针对上述场景,我计划实现以下设计:

  1. 两类DTO:认证专用的AuthUserDto,通用业务场景的UserDto
  2. 两类服务及对应接口:AuthUserService(含实现类DefaultAuthUserService)、UserService(含实现类DefaultUserService)
  3. 新增AuthUserContextService(实现类DefaultAuthUserContextService),负责认证相关上下文操作(如getCurrentUser()、setCurrentUser())

应用目录结构

Application.java
│
├───dto
│   │
│   ├───mapper
│   │       RoleMapper.java
│   │       UserMapper.java
│   │
│   └───model
│           AuthUserDto.java
│           RoleDto.java
│           UserDto.java
│  
├───entity
│       Role.java
│       User.java
│  
├───repository
│       RoleRepository.java
│       UserRepository.java
│
├───service
│   │   DefaultAuthUserContextService.java
│   │   DefaultAuthUserService.java
│   │   DefaultUserService.java
│   │
│   └───interfaces
│           AuthUserContextService.java
│           AuthUserService.java
│           UserService.java

组件交互逻辑

  • 安全组件通过DefaultAuthUserService获取用户时,返回AuthUserDto
  • 安全组件通过DefaultAuthUserContextService进行当前用户的获取/设置操作时,使用AuthUserDto
  • 社交组件通过DefaultUserService获取用户时,返回UserDto

咨询问题

  • 上述设计方案是否可行?
  • 有没有相关的最佳实践可以参考?
  • 是否存在更优的场景化用户实体处理方式?

内容的提问来源于stack exchange,提问作者Slevin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 23:50:28