认证与应用场景用户实体架构方案咨询:该设计是否合理?
社交应用用户实体场景化架构设计咨询
背景与需求
我需要为一款带社交功能的应用做架构设计,目标是实现单一用户实体及对应的Repository,但存在两种完全不同的用户数据获取场景:
- 认证场景:应用安全组件在认证流程中,仅需获取用户的邮箱(或用户名)、密码及角色信息,作为认证数据对象使用
- 业务场景:应用社交组件需要获取用户的业务数据(如喜好书籍、爱好、食谱等),无需传递密码等敏感信息
现有设计方案
针对上述场景,我计划实现以下设计:
- 两类DTO:认证专用的
AuthUserDto,通用业务场景的UserDto - 两类服务及对应接口:
AuthUserService(含实现类DefaultAuthUserService)、UserService(含实现类DefaultUserService) - 新增
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
相关产品推荐
相关产品推荐

