术语表

中文 英文 描述
用户中心2.0 Shinda-Maru 用户中心2.0版本描述
新版用户中心 Cancel 新版用户中心描述
登录安全配置功能 - 包括图形验证码临界次数配置、用户账户次数临界、用户账户冻结时间临界
图形验证码临界次数配置功能 - 密码输入错误x次后,需要弹出图形验证码(x次可配置)
用户账户次数临界功能 - 用户输入密码/验证码错误 x次后,需冻结当前用户(x可配置)
用户账户冻结时间临界功能 - 用户账户次数临界触发后,冻结用户x分钟(x可配置)
登录日志明细功能 - 系统对用户登录、注册等行为进行日志留存
三方登录 third-part 特指我们作为Oauth客户端,对接微信、微博等三方平台

用例图

image.png

业务架构图

image.png

技术架构图

image.png

部署架构图

image.png

用户中心各模块职责说明

写在前面

依赖关系

按照本文题目顺序,自上而下分层依赖

版本演进说明

每个发布使用3个整数,MAJOR.MINOR.PATCH(主版本、次要版本、补丁版本)。这样做的目的是主版本是不兼容的,API大范围的升级。次要版本应该保留大部分源代码和二进制兼容旧版本的次要版本,认为可能有一些设计变更和不兼容的更新。补丁版本应该向前向后完美兼容。包含一些bug和缺陷修复这些意外的改变。

本文对应代码版本号:

<version>1.1.0.BUILD-SNAPSHOT</version>

模块说明

一、draco-common

1、设计意图:

存放一些通用常规的工具类 & 常量

二、draco-api

1、设计意图

用来存放 Facade 服务接口、出入参、错误码、i18n 文件

2、重点说明

本模块所有 Facade 接口,遵循永健的单参模型设计,所有次要 & 补丁版本改动,承诺向前兼容。

三、draco-server

1、设计意图

实现 draco-api 相关服务,比如登录、注册、密码修改、用户信息管理、三方用户信息管理、登录日志记录等

2、重点说明

  • 本模块所有的外部服务依赖,应该放在 adapter 包管理并构建合理抽象的接口,而不是直接代码织入。
  • 本模块的测试用例入口为 io.terminus.draco.ServerSuitTest.java ,每次改动,都承诺完整跑通所有场景用例

四、draco-api-autoconfigure

1、设计意图

本模块为 spring-boot 自动配置工程,提供 Facade 接口的 dubbo 消费逻辑,方便项目层的使用

2、重点说明

  • 本模块未依赖 draco-server,而是直接依赖了 draco-api 模块
  • 本模块使用了 spring boot 的自动配置特性

五、draco-web-autoconfigure

1、设计意图

本模块作为 web 应用的 sdk 用来实现 登录 token 的认证。会被各个使用用户中心的应用所依赖使用。当前版本强依赖了用户中心服务端提供的 dubbo 服务

2、重点说明

本模块也使用了 spring-boot 的自动配置特性

六、draco-web-common

1、设计意图

本模块来实现管理端 & web端通用的 web 应用服务,包括用户登录、当前用户查询、图片验证码服务、邮箱服务、手机号服务、密码服务等

2、重点说明

  • 除功能性任务,本模块还需实现一些基础设置,比如 filter 异常拦截、统一的返回结构、统一的异常处理。本模块承诺异常拦截、统一的返回结构、异常处理等额外功能(包括未来类似的功能设计),默认不生效,通过开关配置才会生效

七、draco-admin

1、设计意图

本模块实现管理端相关能力,比如用户的冻结、解冻、分页查询、oauth-client 的增删改查等

2、重点说明

  • 本模块的功能改动,都承诺走 io.terminus.draco.admin.controller.AdminClientControllerTest.java 回归过后才会提交

八、draco-web

1、设计意图

本模块提供 web 端相关功能,比如三方登录、用户注册等

2、重点说明

  • 本模块所有改动,承诺走 y-api 实现基线用例回归 & io.terminus.draco.web.WebSuitTest.java 回归后方可发布
  • 本模块不依赖 draco-admin ,直接依赖 draco-web-common

九、draco-oauth-server

1、设计意图

本模块提供 oauth-server 端认证能力,同时也集成了 draco-web 的所有 api

2、重点说明

  • 本模块所有改动,承诺走 y-api 实现基线用例回归 & io.terminus.draco.oauth.OauthServerSuitTest.java 回归后方可发布

用户中心SDK 接入指南(1.1.0.BUILD-SNAPSHOT)

spring boot接入

1、POM 引入 web sdk

  1. <dependency>
  2. <artifactId>draco-web-autoconfigure</artifactId>
  3. <groupId>io.terminus.draco</groupId>
  4. <version>1.1.0.BUILD-SNAPSHOT</version>
  5. </dependency>

2、配置yml文件token解析配置

  1. draco:
  2. web:
  3. login-config:
  4. # 这里需要和 uc web 端配置一样
  5. token-key: ${LOGIN_SHARE_COOKIE_NAME:u_c_local}
  6. token-type: JWT
  7. pc-expire-time: ${LOGIN_SESSION_EXPIRE_TIME:3600}
  8. app-expire-time: ${LOGIN_APP_SESSION_EXPIRE_TIME:2592000}
  9. token-storage-type: Cookie
  10. cookie-domain: ${COOKIE_DOMAIN:terminus.io}

3、开启mock(根据实际情况决定是否开启)

  1. draco:
  2. mock:
  3. enable: true

4、获取当前用户

  1. UserContext.getUserId();
  2. UserContext.getUserInfo();

5、哪些path可以获取用户信息?

默认我们的上下文注入filter拦截路径为/*,也就是登录状态下所有的path后端path都能获取到用户信息
uc提供的注入filter只做注入当前登录用户到上下文的操作并不会做登录检查,对于哪些路径需要拦截请接入方自己实现一个filter来做登录check和报错

6、dubbo 依赖服务

  1. @Autowired
  2. private UcUserReadFacade userReadFacade;
  3. @Autowired
  4. private UcUserWriteFacade userWriteFacade;

扩展点说明

当前版本:
1.1.0.BUILD-SNAPSHOT

token 存储介质扩展点:

设计目的:

有些项目或者场景不方便使用 cookie 方式实现token 的传递 或者相较默认实现需要额外多做一些事情,这里需要预埋抽象扩展点,方便项目层自行实现扩展实现的切换。

核心拓展点:

  1. /**
  2. * token 存储策略类
  3. * 功能定位:
  4. * token 生成后,需要将 token 写入到相应的请求对象中
  5. * 这里对 token 写入机制做一个简单抽象,实现相关功能
  6. *
  7. * @author wang.xi
  8. */
  9. public interface TokenStorageProcessor {
  10. /**
  11. * token 存储策略函数
  12. *
  13. * @param context token 存储上下文信息
  14. */
  15. void tokenStorage(TokenStorageContext context);
  16. /**
  17. * token 清除策略函数
  18. *
  19. * @param context token 清除上下文
  20. */
  21. void tokenRemove(TokenRemoveContext context);
  22. }

默认实现:

默认通过 cookie 机制实现 token 的传递,在 tokenStorage 函数中实现 cookie 的写入

扩展实现生效方式:

通过 @Bean 注解 & @Conditional 系列注解,实现实现类的替换,示例如下:

  1. @Configuration
  2. public class DracoWebCommonConfiguration {
  3. ...
  4. @Bean
  5. @ConditionalOnProperty(prefix = "draco.web.login-config", name = "token-storage-type",
  6. havingValue = "Cookie", matchIfMissing = true)
  7. public TokenStorageProcessor tokenStorageProcessor(LoginConfigProperties loginConfigProperties) {
  8. return new TokenCookieStorageProcessor(loginConfigProperties);
  9. }
  10. ...
  11. }

触发时机:

用户登录/注册完成后,针对前端返回数据之前,以手机号密码登录为例:

  1. // ......
  2. public abstract class BaseLoginController {
  3. ...
  4. @Autowired
  5. private TokenStorageProcessor tokenStorageProcessor;
  6. ...
  7. @ApiOperation("手机号 + 密码登录接口")
  8. @PostMapping(value = "mobile")
  9. public TokenInfo loginByMobileAndPassword(
  10. @RequestBody LoginByMobileAndPasswordRequest request,
  11. HttpServletRequest servletRequest,
  12. HttpServletResponse servletResponse) {
  13. request.setTenantId(TenantContext.getTenantId());
  14. loginConfiguration.initExpireTime(request);
  15. Response<TokenInfo> response = loginFacade.loginByMobileAndPassword(request);
  16. if (!response.isSuccess()) {
  17. log.info("call mobile password login service error, params:{}, cause:{}",
  18. request, response.getError());
  19. throw new UcRestException(response.getError());
  20. }
  21. // 登录成功后需要将 token 存储下来
  22. TokenStorageContext context = new TokenStorageContext(response.getResult(),
  23. servletRequest, servletResponse);
  24. tokenStorageProcessor.tokenStorage(context);
  25. return response.getResult();
  26. }
  27. ...
  28. }

登录/注册/用户 控制器扩展实现扩展点

设计目的:

有些项目需要对用户登录/注册/获取登录用户信息等http 服务做额外的扩展,比如基本的获取当前用户信息接口不一定满足项目测的需要(项目一般会多一些字段),这里需要允许项目测对这些控制器做扩展。

核心扩展点:

通过将这几个控制器设置为 抽象类的方式,保证默认不生效

  1. ...
  2. public abstract class BaseUserCommonController {
  3. ...
  4. }
  5. ...
  6. public abstract class BaseLoginController {
  7. ...
  8. }
  9. ...
  10. public class BaseSignUpController {
  11. ...
  12. }

扩展生效方式:

通过 @Bean 注解 & @Conditional 系列注解,实现实现类的替换,示例如下:

  1. public class DracoWebConfiguration {
  2. ...
  3. @Bean
  4. @ConditionalOnProperty(prefix = "draco.web", name = "enable-sign-up-api", havingValue = "true", matchIfMissing = true)
  5. public BaseSignUpController baseSignUpController(SignUpFacade signUpFacade,
  6. UcUserReadFacade ucUserReadFacade,
  7. LoginConfiguration loginConfiguration,
  8. TokenStorageProcessor tokenStorageProcessor) {
  9. return new BaseSignUpController(signUpFacade,ucUserReadFacade,loginConfiguration,tokenStorageProcessor) {
  10. };
  11. }
  12. ...
  13. }

Http服务返回值固定返回结构扩展点

设计目的:

因为不同的项目有不同的http返回数据结构的要求,因此各个Controller 层的方法,返回值不显式使用 Response 对象进行包裹,而是利用 SpringAdvice 机制实现固定的 http 服务返回值结构

核心扩展点:

  1. @Order(Ordered.HIGHEST_PRECEDENCE)
  2. @ControllerAdvice("io.terminus")
  3. public abstract class BaseResponseAdvice extends AbstractMappingJacksonResponseBodyAdvice {
  4. @Override
  5. protected void beforeBodyWriteInternal(MappingJacksonValue bodyContainer,
  6. MediaType contentType, MethodParameter returnType,
  7. ServerHttpRequest request, ServerHttpResponse response) {
  8. Object returnValue = bodyContainer.getValue();
  9. if (returnValue == null) {
  10. returnValue = this.getDefaultValue(returnType);
  11. }
  12. if (returnType.getMethod().getReturnType() != ResponseEntity.class) {
  13. if (returnType.getMethod().getReturnType() != Response.class) {
  14. Map<String, Object> result = new HashMap<>(8);
  15. result.put("success", true);
  16. result.put("result", returnValue);
  17. bodyContainer.setValue(result);
  18. }
  19. }
  20. }
  21. private Object getDefaultValue(MethodParameter returnType) {
  22. return Collection.class.isAssignableFrom(returnType.getMethod().getReturnType()) ? Collections.EMPTY_LIST : null;
  23. }
  24. }

扩展生效方式:

通过 @Bean 注解 & @Conditional 系列注解,实现实现类的替换,示例如下:

  1. @Configuration
  2. public class DracoWebCommonConfiguration {
  3. ...
  4. @Bean
  5. @ConditionalOnProperty(prefix = "draco.web", name = "enable-response-wrapper", havingValue = "true")
  6. public BaseResponseAdvice responseAdvice() {
  7. return new BaseResponseAdvice() {
  8. };
  9. }
  10. ...
  11. }

Http 服务异常固定返回结构扩展点

设计目的:

因为不同的项目针对异常有不同的http返回数据结构的要求,因此各个Controller 层的方法的异常,不显式使用 try/cache 进行处理,而是利用 SpringAdvice 机制实现固定的 http 服务异常返回值结构

核心扩展点:

  1. @ControllerAdvice
  2. public abstract class BaseRestExceptionAdvice extends ResponseEntityExceptionHandler {
  3. private final MessageSource messageSource;
  4. private static final Locale DEFAULT_LOCALE = LocaleContextHolder.getLocale();
  5. @Autowired
  6. public BaseRestExceptionAdvice(MessageSource messageSource) {
  7. this.messageSource = messageSource;
  8. }
  9. @ExceptionHandler({UcRestException.class})
  10. protected ResponseEntity<Object> onRestException(UcRestException ex, HttpServletRequest request) {
  11. log.info("Rest异常 : ", ex);
  12. String error = this.messageSource.getMessage(ex.getMessage(), ex.getParams(), ex.getMessage(), DEFAULT_LOCALE);
  13. return new ResponseEntity<>(ImmutableMap.of("success", false, "error", error), HttpStatus.OK);
  14. }
  15. @ExceptionHandler({Exception.class})
  16. protected ResponseEntity<Object> onException(Exception ignore, HttpServletRequest request) {
  17. log.error("未捕获的异常 : ", ignore);
  18. String error = this.messageSource.getMessage("server.error", null,
  19. "server.error", DEFAULT_LOCALE);
  20. return new ResponseEntity<>(ImmutableMap.of("success", false, "error", error), HttpStatus.OK);
  21. }
  22. }

扩展生效方式:

  1. @Configuration
  2. public class DracoWebCommonConfiguration {
  3. ...
  4. @Bean
  5. @ConditionalOnProperty(prefix = "draco.web", name = "enable-exception-wrapper", havingValue = "true")
  6. public BaseRestExceptionAdvice restExceptionAdvice(MessageSource messageSource) {
  7. return new BaseRestExceptionAdvice(messageSource) {
  8. };
  9. }
  10. ...
  11. }

图片验证码生成器扩展点

设计目的:

有些项目可能需要对图片验证码的生成逻辑做扩展,这里需要对生成器的实现逻辑预埋扩展点,方便上次应用扩展

核心扩展点:

通过设计核心接口,实现扩展点的预埋

扩展生效方式:

通过 @Bean 注解 & @Conditional 系列注解,实现实现类的替换,示例如下:

  1. @Configuration
  2. public class DracoServerConfiguration {
  3. ...
  4. @Bean
  5. @ConditionalOnMissingBean(CaptchaGenerator.class)
  6. public CaptchaGenerator captchaGenerator() {
  7. return new DefaultCaptchaGenerator();
  8. }
  9. ...
  10. }

登录前置/后置扩展点

设计目的:

有些项目可能需要在登录前后做一些额外逻辑,比如密码连续输错3次启用图片验证码,输错5次锁定用户,这里需要对登录前后预埋一些扩展点,保证项目测的二次扩展

核心扩展点:

  1. /**
  2. * 登录前置处理器
  3. *
  4. * @author wang.xi
  5. * @version 1.0
  6. * @date 2019/7/8 1:25 PM
  7. */
  8. @EqualsAndHashCode
  9. public abstract class AbstractLoginBeforeHandler implements Comparable<AbstractLoginBeforeHandler> {
  10. public static final int DEFAULT_ORDER = 100;
  11. private static Set<AbstractLoginBeforeHandler> handlerSet = new TreeSet<>();
  12. public static void handle(AbstractLoginRequest request, UcUser user) {
  13. for (AbstractLoginBeforeHandler loginBeforeHandler : handlerSet) {
  14. if (loginBeforeHandler.isSupport(request)) {
  15. loginBeforeHandler.beforeLogin(request, user);
  16. }
  17. }
  18. }
  19. /**
  20. * 登录前置处理方法
  21. *
  22. * @param request 登录请求
  23. * @param user 当前用户实体
  24. */
  25. protected abstract void beforeLogin(AbstractLoginRequest request, UcUser user);
  26. /**
  27. * 登录前置处理校验方法
  28. * 仅当返回 true 时才会执行扩展方法
  29. *
  30. * @param request 登录请求
  31. * @return 支持性校验结果
  32. */
  33. protected abstract Boolean isSupport(AbstractLoginRequest request);
  34. /**
  35. * 前置处理器的执行顺序 值越小 优先级越高
  36. *
  37. * @return 优先级
  38. */
  39. protected int getOrder() {
  40. Order order = this.getClass().getAnnotation(Order.class);
  41. if (order != null) {
  42. return order.value();
  43. }
  44. return DEFAULT_ORDER;
  45. }
  46. @PostConstruct
  47. protected void init() {
  48. handlerSet.add(this);
  49. }
  50. @Override
  51. public int compareTo(AbstractLoginBeforeHandler handler) {
  52. return Integer.compare(this.getOrder(), handler.getOrder());
  53. }
  54. }
  55. // 后置扩展点生效方式类同上述,故忽略

扩展生效方式:

通过 @Bean 注解 & @Conditional 系列注解,实现扩展实现类的注册,示例如下:

  1. @Configuration
  2. public class DracoServerConfiguration {
  3. ...
  4. @Bean
  5. @ConditionalOnProperty(prefix = "draco.server.login-security",
  6. name = "enable", havingValue = "true", matchIfMissing = true)
  7. public AfterLoginSecurityCheckHandler afterLoginSecurityCheckHandler(
  8. LoginLimitCache loginLimitCache
  9. ) {
  10. return new AfterLoginSecurityCheckHandler(loginLimitCache);
  11. }
  12. ...
  13. }

触发时机:

用户登录完成前后,针对facade返回数据之前,以手机号密码登录为例:

  1. public TokenInfo loginByMobileAndPassword(LoginByMobileAndPasswordRequest request) {
  2. // 根据手机号参数查询用户信息
  3. UcUser criteria = new UcUser();
  4. criteria.setTenantId(request.getTenantId());
  5. criteria.setMobile(request.getMobile());
  6. UcUser user = ucUserManage.findUserByMobile(criteria);
  7. if (user == null) {
  8. throw new ServiceException(UcLoginErrorCodeMap.USER_NOT_EXIST);
  9. }
  10. AbstractLoginBeforeHandler.handle(request, user);
  11. // 校验密码是否匹配
  12. checkPasswordMatch(user, request);
  13. // 生成 token 信息
  14. TokenInfo tokenInfo = tokenManage.generateTokenInfo(request, user);
  15. AbstractLoginAfterHandler.handle(request, user, tokenInfo);
  16. return tokenInfo;
  17. }

密码加密/匹配算法扩展点:

设计目的:

因为某些项目针对密码的加密解密算法逻辑可能有不同的改造需求(比如某项目就因为考虑历史系统密码兼容问题,有对一个密码需要分别使用两种以上加密算法尝试解密的需求),因此这里对加密/解密需要设置扩展点,方便项目测动态切换扩展实现。

核心扩展点:

  1. public interface PasswordMatcher {
  2. /**
  3. * 加密
  4. *
  5. * @param password 明文
  6. * @return 加密值
  7. */
  8. String encode(String password);
  9. /**
  10. * 密码匹配器
  11. *
  12. * @param password 明文
  13. * @param encodedPassword 加密值
  14. * @return 是否匹配
  15. */
  16. Boolean matches(String password, String encodedPassword);
  17. }

扩展生效方式:

通过 @Bean 注解 & @Conditional 系列注解,实现扩展实现类的注册,示例如下:

  1. @Configuration
  2. public class DracoServerConfiguration {
  3. ...
  4. @Bean
  5. @ConditionalOnMissingBean(PasswordMatcher.class)
  6. public PasswordMatcher passwordMatcher() {
  7. return new DefaultPasswordMatcher();
  8. }
  9. ...
  10. }

登录密码验证扩展点

设计目的:

因为密码的加密/解密能拿到的用户信息仅有密码,在做一些额外的判断,比如登录密码错误的次数累加就无法支持,因此需要对富含用户信息的接缝处留一些扩展点

核心扩展点:

  1. public interface LoginPasswordVerifier {
  2. /**
  3. * 登录密码验证接口
  4. *
  5. * @param user 目标用户
  6. * @param request 当前密码登录请求信息
  7. */
  8. void passwordVerify(UcUser user, AbstractLoginByPasswordRequest request);
  9. }

扩展生效方式:

通过 @Bean 注解 & @Conditional 系列注解,实现扩展实现类的注册,示例如下:

  1. @Configuration
  2. public class DracoServerConfiguration {
  3. @Bean
  4. @ConditionalOnProperty(prefix = "draco.server.login-security",
  5. name = "enable", havingValue = "true", matchIfMissing = true)
  6. public DefaultLoginPasswordVerifier defaultLoginPasswordVerifier(
  7. PasswordMatcher passwordMatcher,
  8. LoginLimitCache loginLimitCache) {
  9. return new DefaultLoginPasswordVerifier(loginLimitCache, passwordMatcher);
  10. }
  11. }

触发时机:

以用户名密码登录为例,校验用户名密码的逻辑统一使用扩展点完成:

  1. public class LoginManage {
  2. ...
  3. public TokenInfo loginByUsernameAndPassword(LoginByUsernameAndPasswordRequest request) {
  4. // 根据参数查询用户信息
  5. UcUser criteria = new UcUser();
  6. criteria.setTenantId(request.getTenantId());
  7. criteria.setUsername(request.getUsername());
  8. // todo 替换接口 find by username
  9. UcUser user = ucUserManage.findUserByOptionalParam(criteria);
  10. if (user == null) {
  11. throw new ServiceException(UcLoginErrorCodeMap.USER_NOT_EXIST);
  12. }
  13. AbstractLoginBeforeHandler.handle(request, user);
  14. // 校验密码是否匹配
  15. this.checkPasswordMatch(user, request);
  16. // 生成 token 信息
  17. TokenInfo tokenInfo = tokenManage.generateTokenInfo(request, user);
  18. AbstractLoginAfterHandler.handle(request, user, tokenInfo);
  19. return tokenInfo;
  20. }
  21. private void checkPasswordMatch(UcUser user, AbstractLoginByPasswordRequest request) {
  22. loginPasswordVerifier.passwordVerify(user, request);
  23. }
  24. ...
  25. }

服务端token生成扩展点

设计目的:

因为有些项目不希望token的字符串太长(真的遇到过),因此这里需要开放token的生成逻辑给项目侧

核心扩展点:

  1. public interface TokenGenerator {
  2. /**
  3. * token 生成核心接口
  4. *
  5. * @param request token生成请求
  6. * @return token信息
  7. */
  8. TokenInfo tokenGenerate(TokenGenerateRequest request);
  9. }

扩展生效方式:

通过 @Bean 注解 & @Conditional 系列注解,实现扩展实现类的注册,示例如下:

  1. @Configuration
  2. public class DracoServerConfiguration {
  3. @Bean
  4. @ConditionalOnMissingBean(TokenGenerator.class)
  5. public TokenGenerator tokenMatcher() {
  6. return new DefaultTokenGenerator();
  7. }
  8. }

用户名生成扩展点

设计目的:

因为使用用户名密码登录,需要有默认用户名生成,同时,因为用户名生成需保证唯一,所以用户中心默认提供了一版用户名实现方式,项目测可以自主扩展

核心扩展点:

  1. public interface UsernameGenerator {
  2. /**
  3. * 生成用户名
  4. *
  5. * @param user 用户
  6. * @return 用户名
  7. */
  8. String generateUsername(UcUser user);
  9. }

扩展生效方式:

通过 @Bean 注解 & @Conditional 系列注解,实现扩展实现类的注册,示例如下:

  1. ...
  2. @Bean
  3. @ConditionalOnMissingBean(UsernameGenerator.class)
  4. public UsernameGenerator usernameGenerator() {
  5. return new DefaultUsernameGenerator();
  6. }
  7. ...

Web-SDK 用户Mock 功能扩展点:

设计目的:

因为用户中心的sdk 会被各个应用使用,但是不是每个应用在开发阶段就会链接用户中心服务,也不是每个应用每次接口调试都想走一遍用户登录流程,为了简化开发阶段的调试成本,用户中心的sdk需要提供 mock 用户的能力。

核心扩展点:

  1. @Configuration
  2. public class DracoWebAutoconfigure {
  3. ...
  4. @Bean
  5. @ConditionalOnProperty(prefix = "draco.mock", value = "enable", havingValue = "true")
  6. public FilterRegistrationBean registrationBean() {
  7. FilterRegistrationBean registrationBean = new FilterRegistrationBean();
  8. registrationBean.setFilter(new UserCenterLoginMockContextFilter());
  9. registrationBean.addUrlPatterns("/*");
  10. registrationBean.setOrder(UserCenterLoginMockContextFilter.ORDER);
  11. return registrationBean;
  12. }
  13. ...
  14. }

扩展生效方式:

  1. draco:
  2. mock:
  3. enable: true

用户中心API文档整理

用户中心接口文档

简介
如有任何疑问,可以联系@冠羽

HOST:draco-web-test.captain.terminus.io

联系人:冠羽

Version:1.0

接口路径:/v2/api-docs

三方服务

QQ登录接口

接口描述:

接口地址:/api/user/web/third-part/app/qq/login

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "accessToken": "",
  3. "appName": "",
  4. "bind": true,
  5. "openId": "",
  6. "unionId": ""
  7. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
authInfo authInfo body true AppAuthQQBean AppAuthQQBean

schema属性说明

AppAuthQQBean

参数名称 参数说明 in 是否必须 数据类型 schema
accessToken body false string
appName body false string
bind body false boolean
openId body false string
unionId body false string

响应示例:

  1. {
  2. "expireTime": 0,
  3. "extra": {},
  4. "tenantId": 0,
  5. "token": "",
  6. "userId": 0
  7. }

响应参数:

参数名称 参数说明 类型 schema
expireTime 过期时长(秒) integer(int32) integer(int32)
extra object
tenantId integer(int32) integer(int32)
token token的值 string
userId 用户ID integer(int64) integer(int64)

响应状态:

状态码 说明 schema
200 OK TokenInfo
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

微信登录接口

接口描述:

接口地址:/api/user/web/third-part/app/we-chat/login

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "appName": "",
  3. "bind": true,
  4. "code": ""
  5. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
authInfo authInfo body true AppAuthWeChatBean AppAuthWeChatBean

schema属性说明

AppAuthWeChatBean

参数名称 参数说明 in 是否必须 数据类型 schema
appName body false string
bind body false boolean
code body false string

响应示例:

  1. {
  2. "expireTime": 0,
  3. "extra": {},
  4. "tenantId": 0,
  5. "token": "",
  6. "userId": 0
  7. }

响应参数:

参数名称 参数说明 类型 schema
expireTime 过期时长(秒) integer(int32) integer(int32)
extra object
tenantId integer(int32) integer(int32)
token token的值 string
userId 用户ID integer(int64) integer(int64)

响应状态:

状态码 说明 schema
200 OK TokenInfo
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

微博登录接口

接口描述:

接口地址:/api/user/web/third-part/app/wei-bo/login

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "accessToken": "",
  3. "appName": "",
  4. "bind": true
  5. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
authInfo authInfo body true AppAuthWeiBoBean AppAuthWeiBoBean

schema属性说明

AppAuthWeiBoBean

参数名称 参数说明 in 是否必须 数据类型 schema
accessToken body false string
appName body false string
bind body false boolean

响应示例:

  1. {
  2. "expireTime": 0,
  3. "extra": {},
  4. "tenantId": 0,
  5. "token": "",
  6. "userId": 0
  7. }

响应参数:

参数名称 参数说明 类型 schema
expireTime 过期时长(秒) integer(int32) integer(int32)
extra object
tenantId integer(int32) integer(int32)
token token的值 string
userId 用户ID integer(int64) integer(int64)

响应状态:

状态码 说明 schema
200 OK TokenInfo
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

小程序-绑定手机号请求提交

接口描述:

接口地址:/api/user/web/third-part/app/wx-app/bind

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "avatarUrl": "",
  3. "encryptedData": "",
  4. "iv": "",
  5. "nickName": ""
  6. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
WxAppBindBeanRequest WxAppBindBeanRequest body true WxAppBindBean WxAppBindBean

schema属性说明

WxAppBindBean

参数名称 参数说明 in 是否必须 数据类型 schema
avatarUrl 微信用户头像 body true string
encryptedData 加密数据 body true string
iv 初始向量 body true string
nickName 微信用户昵称 body true string

响应示例:

  1. {
  2. "expireTime": 0,
  3. "extra": {},
  4. "tenantId": 0,
  5. "token": "",
  6. "userId": 0
  7. }

响应参数:

参数名称 参数说明 类型 schema
expireTime 过期时长(秒) integer(int32) integer(int32)
extra object
tenantId integer(int32) integer(int32)
token token的值 string
userId 用户ID integer(int64) integer(int64)

响应状态:

状态码 说明 schema
200 OK TokenInfo
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

微信小程序登录接口

接口描述:

接口地址:/api/user/web/third-part/app/wx-app/login

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "appName": "",
  3. "avatarUrl": "",
  4. "bind": true,
  5. "code": "",
  6. "nickName": ""
  7. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
authInfo authInfo body true AppAuthWxAppBean AppAuthWxAppBean

schema属性说明

AppAuthWxAppBean

参数名称 参数说明 in 是否必须 数据类型 schema
appName body false string
avatarUrl body false string
bind body false boolean
code body false string
nickName body false string

响应示例:

  1. {
  2. "expireTime": 0,
  3. "extra": {},
  4. "tenantId": 0,
  5. "token": "",
  6. "userId": 0
  7. }

响应参数:

参数名称 参数说明 类型 schema
expireTime 过期时长(秒) integer(int32) integer(int32)
extra object
tenantId integer(int32) integer(int32)
token token的值 string
userId 用户ID integer(int64) integer(int64)

响应状态:

状态码 说明 schema
200 OK TokenInfo
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

三方登录服务

接口描述:

接口地址:/api/user/web/third-part/auth/{thirdPartType}

请求方式GET

consumes:``

produces:["*/*"]

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
code 回调编码 query true string
error 回调错误信息 query false string
state 存放目标URL和防止CORS query false string
thirdPartType 登录方式 path true string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
401 Unauthorized
403 Forbidden
404 Not Found

三方认证服务

接口描述:

接口地址:/api/user/web/third-part/authorization

请求方式GET

consumes:``

produces:["*/*"]

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
appName appName query false string
targetUrl 回调地址 query true string
type 登录方式 query true string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
401 Unauthorized
403 Forbidden
404 Not Found

三方认证服务

接口描述:

接口地址:/api/user/web/third-part/authorization

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "appName": "",
  3. "targetUrl": "",
  4. "type": "github,wechat,qq,weibo,wxapp,wechat_mp"
  5. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true AuthorizeByThirdPartBean AuthorizeByThirdPartBean

schema属性说明

AuthorizeByThirdPartBean

参数名称 参数说明 in 是否必须 数据类型 schema
appName 应用名称 body false string
targetUrl 登录成功重定向地址 body true string
type 第三方类型 body true string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

绑定当前用户服务

接口描述:

接口地址:/api/user/web/third-part/bind-current-user

请求方式GET

consumes:``

produces:["*/*"]

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
appName appName query false string
targetUrl 回调地址 query true string
type 登录方式 query true string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
401 Unauthorized
403 Forbidden
404 Not Found

绑定当前用户服务

接口描述:

接口地址:/api/user/web/third-part/bind-current-user

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "appName": "",
  3. "targetUrl": "",
  4. "type": "github,wechat,qq,weibo,wxapp,wechat_mp",
  5. "userId": 0
  6. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true ThirdPartBindBean ThirdPartBindBean

schema属性说明

ThirdPartBindBean

参数名称 参数说明 in 是否必须 数据类型 schema
appName 应用名称 body false string
targetUrl 登录成功重定向地址 body true string
type 第三方类型 body true string
userId 要绑定的用户Id body false integer(int64)

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

三方-绑定手机号请求提交

接口描述:

接口地址:/api/user/web/third-part/bind/mobile-by-sms-code

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "avatarUrl": "",
  3. "ip": "",
  4. "isApp": true,
  5. "mobile": "15950552810",
  6. "nickName": "15950552810",
  7. "prefix": "86",
  8. "smsCode": "4567",
  9. "thirdAccountParam": {
  10. "accountId": "",
  11. "accountName": "",
  12. "accountType": "",
  13. "appId": "",
  14. "extra": {},
  15. "openId": "",
  16. "originalJson": "",
  17. "userId": 0
  18. }
  19. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true ThirdAccountBindByMobileAndSmsCodeRequest ThirdAccountBindByMobileAndSmsCodeRequest

schema属性说明

ThirdAccountBindByMobileAndSmsCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
avatarUrl 微信用户头像 body false string
ip ip地址 body false string
isApp 是否APP调用,false指代PC调用 body true boolean
mobile 手机号 body true string
nickName 微信用户昵称 body false string
prefix 手机号前缀 body false string
smsCode 短信验证码 body true string
thirdAccountParam 三方账户信息 body true ThirdAccountParam ThirdAccountParam

ThirdAccountParam

参数名称 参数说明 in 是否必须 数据类型 schema
accountId 三方账户id body false string
accountName 三方账户名 body false string
accountType 三方账户类型,e.g:QQ、WECHAT、WECHAT-MP、WEIBO body false string
appId 三方客户端id body false string
extra body false object
openId 三方账户 openId body false string
originalJson 三方原始信息 body false string
userId 关联的用户主表id body false integer(int64)

响应示例:

  1. {
  2. "expireTime": 0,
  3. "extra": {},
  4. "tenantId": 0,
  5. "token": "",
  6. "userId": 0
  7. }

响应参数:

参数名称 参数说明 类型 schema
expireTime 过期时长(秒) integer(int32) integer(int32)
extra object
tenantId integer(int32) integer(int32)
token token的值 string
userId 用户ID integer(int64) integer(int64)

响应状态:

状态码 说明 schema
200 OK TokenInfo
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

三方-绑定手机号验证码发送服务

接口描述:

接口地址:/api/user/web/third-part/bind/mobile-send-sms-code

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "avatarUrl": "",
  3. "captcha": "",
  4. "ip": "",
  5. "isApp": true,
  6. "mobile": "15950552810",
  7. "nickName": "15950552810",
  8. "prefix": "86",
  9. "thirdAccountParam": {
  10. "accountId": "",
  11. "accountName": "",
  12. "accountType": "",
  13. "appId": "",
  14. "extra": {},
  15. "openId": "",
  16. "originalJson": "",
  17. "userId": 0
  18. },
  19. "token": ""
  20. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true ThirdAccountBindByMobileSendSmsCodeRequest ThirdAccountBindByMobileSendSmsCodeRequest

schema属性说明

ThirdAccountBindByMobileSendSmsCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
avatarUrl 微信用户头像 body false string
captcha 图片验证码 body false string
ip ip地址 body false string
isApp 是否APP调用,false指代PC调用 body true boolean
mobile 手机号 body true string
nickName 微信用户昵称 body false string
prefix 手机号前缀 body false string
thirdAccountParam 三方账户信息 body true ThirdAccountParam ThirdAccountParam
token 图片验证码token body false string

ThirdAccountParam

参数名称 参数说明 in 是否必须 数据类型 schema
accountId 三方账户id body false string
accountName 三方账户名 body false string
accountType 三方账户类型,e.g:QQ、WECHAT、WECHAT-MP、WEIBO body false string
appId 三方客户端id body false string
extra body false object
openId 三方账户 openId body false string
originalJson 三方原始信息 body false string
userId 关联的用户主表id body false integer(int64)

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

查询当前用户已绑定三方类型清单

接口描述:

接口地址:/api/user/web/third-part/list-bound

请求方式GET

consumes:``

produces:["*/*"]

请求参数
暂无

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
401 Unauthorized
403 Forbidden
404 Not Found

三方绑定解绑接口

接口描述:

接口地址:/api/user/web/third-part/unbind

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "thirdAccountType": ""
  3. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true UnBindThirdAccountRequest UnBindThirdAccountRequest

schema属性说明

UnBindThirdAccountRequest

参数名称 参数说明 in 是否必须 数据类型 schema
thirdAccountType 目标解绑三方渠道 body true string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

图片验证码服务

校验图片验证码-公共接口

接口描述:

接口地址:/api/user/web/check-captcha

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "captcha": "",
  3. "token": ""
  4. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
captchaRequest 校验验证码请求 body true CheckCaptchaRequest CheckCaptchaRequest

schema属性说明

CheckCaptchaRequest

参数名称 参数说明 in 是否必须 数据类型 schema
captcha 图片验证码答案 body true string
token 图片验证码 token body true string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

获取图片验证码-公共接口

接口描述:

接口地址:/api/user/web/get-captcha

请求方式GET

consumes:``

produces:["*/*"]

请求参数
暂无

响应示例:

  1. {
  2. "imageUrl": "",
  3. "token": ""
  4. }

响应参数:

参数名称 参数说明 类型 schema
imageUrl string
token string

响应状态:

状态码 说明 schema
200 OK CaptchaBean
401 Unauthorized
403 Forbidden
404 Not Found

密码服务

修改密码

接口描述:

接口地址:/api/user/web/password/change-password

请求方式PUT

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "newPassword": "",
  3. "oldPassword": ""
  4. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request 修改用户密码请求 body true ChangeUserPasswordRequest ChangeUserPasswordRequest

schema属性说明

ChangeUserPasswordRequest

参数名称 参数说明 in 是否必须 数据类型 schema
newPassword 新密码 body true string
oldPassword 原始密码 body false string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

忘记密码-通过邮件重置密码

接口描述:

接口地址:/api/user/web/password/reset-by-email

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "confirm": "",
  3. "email": "",
  4. "emailCode": "",
  5. "password": ""
  6. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request 忘记密码-通过短信验证码设置密码请求 body true PasswordResetByEmailCodeRequest PasswordResetByEmailCodeRequest

schema属性说明

PasswordResetByEmailCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
confirm 确认密码 body true string
email 邮箱 body true string
emailCode 邮件验证码 body true string
password 密码 body true string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

忘记密码-通过短信重置密码

接口描述:

接口地址:/api/user/web/password/reset-by-sms

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "confirm": "",
  3. "mobile": "",
  4. "password": "",
  5. "smsCode": ""
  6. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request 忘记密码-通过短信验证码设置密码请求 body true PasswordResetBySmsCodeRequest PasswordResetBySmsCodeRequest

schema属性说明

PasswordResetBySmsCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
confirm 确认密码 body true string
mobile 手机号 body true string
password 密码 body true string
smsCode 短信验证码 body true string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

忘记密码-发送邮件验证码

接口描述:

接口地址:/api/user/web/password/send-email

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "captcha": "",
  3. "email": "",
  4. "token": ""
  5. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request 发送忘记密码邮箱验证码请求 body true PasswordResetSendEmailCodeRequest PasswordResetSendEmailCodeRequest

schema属性说明

PasswordResetSendEmailCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
captcha 图片验证码 body false string
email 邮箱 body true string
token 图片验证码token body false string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

忘记密码-发送短信验证码

接口描述:

接口地址:/api/user/web/password/send-sms

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "captcha": "",
  3. "mobile": "",
  4. "token": ""
  5. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request 发送忘记密码短信验证码请求 body true PasswordResetSendSmsCodeRequest PasswordResetSendSmsCodeRequest

schema属性说明

PasswordResetSendSmsCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
captcha 图片验证码 body false string
mobile 手机号 body true string
token 图片验证码token body false string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

注册服务

注册-根据唯一标识校验用户是否可用

接口描述:

接口地址:/api/user/web/sign-up/check-exist-by-identifier

请求方式GET

consumes:``

produces:["*/*"]

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
identifier identifier query true string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
401 Unauthorized
403 Forbidden
404 Not Found

注册-提交邮件注册请求

接口描述:

接口地址:/api/user/web/sign-up/register-by-email-code

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "channel": "",
  3. "channelType": "",
  4. "email": "",
  5. "emailCode": "",
  6. "ip": "",
  7. "isApp": true,
  8. "nickname": "",
  9. "password": "",
  10. "prefix": "86"
  11. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request 邮箱注册 body true SignUpByEmailAndEmailCodeRequest SignUpByEmailAndEmailCodeRequest

schema属性说明

SignUpByEmailAndEmailCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
channel 注册渠道 body false string
channelType 注册渠道类型 body false string
email 邮箱 body false string
emailCode 邮件验证码 body false string
ip ip地址 body false string
isApp 是否APP调用,false指代PC调用 body true boolean
nickname 昵称 body false string
password 密码 body false string
prefix body false string

响应示例:

  1. {
  2. "expireTime": 0,
  3. "extra": {},
  4. "tenantId": 0,
  5. "token": "",
  6. "userId": 0
  7. }

响应参数:

参数名称 参数说明 类型 schema
expireTime 过期时长(秒) integer(int32) integer(int32)
extra object
tenantId integer(int32) integer(int32)
token token的值 string
userId 用户ID integer(int64) integer(int64)

响应状态:

状态码 说明 schema
200 OK TokenInfo
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

注册-提交手机号注册请求

接口描述:

接口地址:/api/user/web/sign-up/register-by-sms-code

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "channel": "",
  3. "channelType": "",
  4. "ip": "",
  5. "isApp": true,
  6. "mobile": "15950552810",
  7. "nickname": "",
  8. "password": "",
  9. "prefix": "86",
  10. "smsCode": "4567"
  11. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request 手机号注册 body true SignUpByMobileAndSmsCodeRequest SignUpByMobileAndSmsCodeRequest

schema属性说明

SignUpByMobileAndSmsCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
channel 注册渠道 body false string
channelType 渠道类型 body false string
ip ip地址 body false string
isApp 是否APP调用,false指代PC调用 body true boolean
mobile 手机号 body true string
nickname 昵称 body false string
password 密码 body false string
prefix 手机号前缀 body false string
smsCode 短信验证码 body true string

响应示例:

  1. {
  2. "expireTime": 0,
  3. "extra": {},
  4. "tenantId": 0,
  5. "token": "",
  6. "userId": 0
  7. }

响应参数:

参数名称 参数说明 类型 schema
expireTime 过期时长(秒) integer(int32) integer(int32)
extra object
tenantId integer(int32) integer(int32)
token token的值 string
userId 用户ID integer(int64) integer(int64)

响应状态:

状态码 说明 schema
200 OK TokenInfo
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

注册-发送邮件验证码

接口描述:

接口地址:/api/user/web/sign-up/register-send-email-code

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "captcha": "",
  3. "email": "",
  4. "token": ""
  5. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true SignUpByEmailSendEmailCodeRequest SignUpByEmailSendEmailCodeRequest

schema属性说明

SignUpByEmailSendEmailCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
captcha 图片验证码 body false string
email 邮箱 body true string
token 图片验证码token body false string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

注册-发送手机验证码

接口描述:

接口地址:/api/user/web/sign-up/register-send-sms-code

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "captcha": "",
  3. "mobile": "15950552810",
  4. "prefix": "86",
  5. "token": ""
  6. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true SignUpByMobileSendSmsCodeRequest SignUpByMobileSendSmsCodeRequest

schema属性说明

SignUpByMobileSendSmsCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
captcha 图片验证码 body false string
mobile body true string
prefix body false string
token 图片验证码token body false string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

用户手机号服务

绑定手机号-校验短信验证码并绑定

接口描述:

接口地址:/api/user/web/mobile/bind

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "mobile": "15950552810",
  3. "prefix": "86",
  4. "smsCode": "4567"
  5. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true BindByMobileAndSmsCodeRequest BindByMobileAndSmsCodeRequest

schema属性说明

BindByMobileAndSmsCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
mobile 手机号 body true string
prefix 手机号前缀 body false string
smsCode 短信验证码 body true string

响应示例:

  1. {
  2. "error": "",
  3. "result": true,
  4. "success": true
  5. }

响应参数:

参数名称 参数说明 类型 schema
error string
result boolean
success boolean

响应状态:

状态码 说明 schema
200 OK Response«boolean»
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

绑定手机号-发送短信验证码

接口描述:

接口地址:/api/user/web/mobile/bind/send-sms-code

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "captcha": "",
  3. "mobile": "15950552810",
  4. "prefix": "86",
  5. "token": ""
  6. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true BindMobileSendSmsCodeRequest BindMobileSendSmsCodeRequest

schema属性说明

BindMobileSendSmsCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
captcha 图片验证码 body false string
mobile 手机号 body true string
prefix 手机号前缀 body false string
token 图片验证码token body false string

响应示例:

  1. {
  2. "error": "",
  3. "result": true,
  4. "success": true
  5. }

响应参数:

参数名称 参数说明 类型 schema
error string
result boolean
success boolean

响应状态:

状态码 说明 schema
200 OK Response«boolean»
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

重置手机号-验证新手机号并且完成重置

接口描述:

接口地址:/api/user/web/mobile/reset

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "noticeToken": "",
  3. "receiver": "",
  4. "userId": 0,
  5. "verifyCode": "",
  6. "verifyToken": ""
  7. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request 重置手机号请求 body true ResetMobileRequest ResetMobileRequest

schema属性说明

ResetMobileRequest

参数名称 参数说明 in 是否必须 数据类型 schema
noticeToken 通知模板的key body true string
receiver 接收人 body true string
userId 用户id body true integer(int64)
verifyCode 短信验证码 body true string
verifyToken 验证旧手机号通过的token body true string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

重置手机号-验证码校验

接口描述:

接口地址:/api/user/web/mobile/reset/check-sms-code

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "needVerifyToken": true,
  3. "noticeToken": "",
  4. "noticeType": "",
  5. "receiver": "",
  6. "verifyCode": ""
  7. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request 校验验证码请求 body true CheckVerifyCodeRequest CheckVerifyCodeRequest

schema属性说明

CheckVerifyCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
needVerifyToken 是否需要返回验证通过的token(用于防止跳过步骤) body false boolean
noticeToken 通知模板的key body true string
noticeType 通知类型 SMS、EMAIL,可用值:SMS,EMAIL body true string
receiver 接收人 body true string
verifyCode 验证码 body true string

响应示例:

  1. {
  2. "passed": true,
  3. "verifyToken": ""
  4. }

响应参数:

参数名称 参数说明 类型 schema
passed 是否通过 boolean
verifyToken 验证通过后生产的token string

响应状态:

状态码 说明 schema
200 OK VerifyCodeCheckInfo
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

重置手机号-手机号发送短信验证码

接口描述:

接口地址:/api/user/web/mobile/reset/send-sms

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "captcha": "",
  3. "noticeToken": "",
  4. "noticeType": "",
  5. "receiver": "",
  6. "token": ""
  7. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true SendNoticeRequest SendNoticeRequest

schema属性说明

SendNoticeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
captcha 图片验证码 body true string
noticeToken 通知模板的key body true string
noticeType 通知类型,可用值:SMS,EMAIL body true string
receiver 接收人 body true string
token 图片验证码token body true string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

解绑手机号-校验短信验证码并绑定

接口描述:

接口地址:/api/user/web/mobile/unbind

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "mobile": "15950552810",
  3. "prefix": "86",
  4. "smsCode": "4567"
  5. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true UnBindMobileAndSmsCodeRequest UnBindMobileAndSmsCodeRequest

schema属性说明

UnBindMobileAndSmsCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
mobile body true string
prefix body false string
smsCode body true string

响应示例:

  1. {
  2. "error": "",
  3. "result": true,
  4. "success": true
  5. }

响应参数:

参数名称 参数说明 类型 schema
error string
result boolean
success boolean

响应状态:

状态码 说明 schema
200 OK Response«boolean»
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

解绑手机号-发送短信验证码

接口描述:

接口地址:/api/user/web/mobile/unbind/send-sms-code

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "captcha": "",
  3. "mobile": "15950552810",
  4. "prefix": "86",
  5. "token": ""
  6. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true UnBindMobileSendSmsCodeRequest UnBindMobileSendSmsCodeRequest

schema属性说明

UnBindMobileSendSmsCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
captcha 图片验证码 body false string
mobile 手机号 body true string
prefix 手机号前缀 body false string
token 图片验证码token body false string

响应示例:

  1. {
  2. "error": "",
  3. "result": true,
  4. "success": true
  5. }

响应参数:

参数名称 参数说明 类型 schema
error string
result boolean
success boolean

响应状态:

状态码 说明 schema
200 OK Response«boolean»
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

用户服务

获取当前用户

接口描述:

接口地址:/api/user/web/current-user

请求方式GET

consumes:``

produces:["*/*"]

请求参数
暂无

响应示例:

  1. {
  2. "error": "",
  3. "result": {
  4. "avatar": "",
  5. "channel": "",
  6. "channelType": "",
  7. "createdAt": "",
  8. "email": "",
  9. "enabled": true,
  10. "extra": {},
  11. "id": 0,
  12. "locked": true,
  13. "mobile": "",
  14. "nickname": "",
  15. "passwordExist": true,
  16. "pwdExpireAt": "",
  17. "source": "",
  18. "sourceType": "",
  19. "tag": "",
  20. "tenantId": 0,
  21. "updatedAt": "",
  22. "userDetail": {},
  23. "username": ""
  24. },
  25. "success": true
  26. }

响应参数:

参数名称 参数说明 类型 schema
error string
result UserInfo UserInfo
success boolean

schema属性说明

UserInfo

参数名称 参数说明 类型 schema
avatar 头像 string
channel 注册渠道 string
channelType 渠道类型 string
createdAt 创建时间 string(date-time)
email 邮箱 string
enabled 是否启用 boolean
extra 扩展字段 object
id 主键 integer(int64)
locked 冻结FLAG(0:NOT,1:YES) boolean
mobile 手机号 string
nickname 昵称 string
passwordExist 密码是否存在 boolean
pwdExpireAt 过期时间 string(date-time)
source 用户来源 string
sourceType 来源类型 string
tag 标签 string
tenantId 租户ID integer(int32)
updatedAt 更新时间 string(date-time)
userDetail 用户详细信息 object
username 用户名 string

响应状态:

状态码 说明 schema
200 OK Response«UserInfo»
401 Unauthorized
403 Forbidden
404 Not Found

用户注销

接口描述:

接口地址:/api/user/web/user-destroy

请求方式PUT

consumes:["application/json"]

produces:["*/*"]

请求参数
暂无

响应示例:

  1. {
  2. "error": "",
  3. "result": true,
  4. "success": true
  5. }

响应参数:

参数名称 参数说明 类型 schema
error string
result boolean
success boolean

响应状态:

状态码 说明 schema
200 OK Response«boolean»
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

获取用户信息接口

接口描述:

接口地址:/api/user/web/user-info

请求方式GET

consumes:``

produces:["*/*"]

请求参数
暂无

响应示例:

  1. {
  2. "avatar": "",
  3. "channel": "",
  4. "channelType": "",
  5. "createdAt": "",
  6. "email": "",
  7. "enabled": true,
  8. "extra": {},
  9. "id": 0,
  10. "locked": true,
  11. "mobile": "",
  12. "nickname": "",
  13. "passwordExist": true,
  14. "pwdExpireAt": "",
  15. "source": "",
  16. "sourceType": "",
  17. "tag": "",
  18. "tenantId": 0,
  19. "updatedAt": "",
  20. "userDetail": {},
  21. "username": ""
  22. }

响应参数:

参数名称 参数说明 类型 schema
avatar 头像 string
channel 注册渠道 string
channelType 渠道类型 string
createdAt 创建时间 string(date-time) string(date-time)
email 邮箱 string
enabled 是否启用 boolean
extra 扩展字段 object
id 主键 integer(int64) integer(int64)
locked 冻结FLAG(0:NOT,1:YES) boolean
mobile 手机号 string
nickname 昵称 string
passwordExist 密码是否存在 boolean
pwdExpireAt 过期时间 string(date-time) string(date-time)
source 用户来源 string
sourceType 来源类型 string
tag 标签 string
tenantId 租户ID integer(int32) integer(int32)
updatedAt 更新时间 string(date-time) string(date-time)
userDetail 用户详细信息 object
username 用户名 string

响应状态:

状态码 说明 schema
200 OK UserInfo
401 Unauthorized
403 Forbidden
404 Not Found

更新用户信息

接口描述:

接口地址:/api/user/web/user-info

请求方式PUT

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "avatar": "",
  3. "extra": {},
  4. "nickname": "",
  5. "userDetail": {}
  6. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true ChangeUserInfoRequest ChangeUserInfoRequest

schema属性说明

ChangeUserInfoRequest

参数名称 参数说明 in 是否必须 数据类型 schema
avatar 头像 body false string
extra 用户扩展字段 body false object
nickname 用户昵称 body false string
userDetail 用户详情 body false object

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

用户邮箱服务

绑定邮箱-校验邮件验证码并绑定

接口描述:

接口地址:/api/user/web/email/bind

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "email": "",
  3. "emailCode": ""
  4. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true BindByEmailAndEmailCodeRequest BindByEmailAndEmailCodeRequest

schema属性说明

BindByEmailAndEmailCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
email 邮箱 body true string
emailCode 邮件验证码 body true string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

绑定邮箱-发送邮件验证码

接口描述:

接口地址:/api/user/web/email/bind/send-email-code

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "captcha": "",
  3. "email": "",
  4. "token": ""
  5. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true BindEmailSendEmailCodeRequest BindEmailSendEmailCodeRequest

schema属性说明

BindEmailSendEmailCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
captcha 图片验证码 body false string
email 邮箱 body true string
token 图片验证码token body false string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

重置邮箱-验证新邮箱并且完成重置

接口描述:

接口地址:/api/user/web/email/reset

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "receiver": "",
  3. "userId": 0,
  4. "verifyCode": "",
  5. "verifyToken": ""
  6. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request 重置邮箱请求 body true ResetEmailRequest ResetEmailRequest

schema属性说明

ResetEmailRequest

参数名称 参数说明 in 是否必须 数据类型 schema
receiver 接收人 body true string
userId 用户id body false integer(int64)
verifyCode 邮件验证码 body true string
verifyToken 验证旧邮箱通过的token body true string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

重置邮箱-预校验

接口描述:

接口地址:/api/user/web/email/reset/check-email-code

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "needVerifyToken": true,
  3. "noticeToken": "",
  4. "noticeType": "",
  5. "receiver": "",
  6. "verifyCode": ""
  7. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request 校验验证码请求 body true CheckVerifyCodeRequest CheckVerifyCodeRequest

schema属性说明

CheckVerifyCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
needVerifyToken 是否需要返回验证通过的token(用于防止跳过步骤) body false boolean
noticeToken 通知模板的key body true string
noticeType 通知类型 SMS、EMAIL,可用值:SMS,EMAIL body true string
receiver 接收人 body true string
verifyCode 验证码 body true string

响应示例:

  1. {
  2. "passed": true,
  3. "verifyToken": ""
  4. }

响应参数:

参数名称 参数说明 类型 schema
passed 是否通过 boolean
verifyToken 验证通过后生产的token string

响应状态:

状态码 说明 schema
200 OK VerifyCodeCheckInfo
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

重置邮箱-邮箱发送邮件验证码

接口描述:

接口地址:/api/user/web/email/reset/send-email

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "captcha": "",
  3. "noticeToken": "",
  4. "noticeType": "",
  5. "receiver": "",
  6. "token": ""
  7. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true SendNoticeRequest SendNoticeRequest

schema属性说明

SendNoticeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
captcha 图片验证码 body true string
noticeToken 通知模板的key body true string
noticeType 通知类型,可用值:SMS,EMAIL body true string
receiver 接收人 body true string
token 图片验证码token body true string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

解绑邮箱-校验邮件验证码并解绑

接口描述:

接口地址:/api/user/web/email/unbind

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "email": "",
  3. "emailCode": ""
  4. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true UnBindEmailAndEmailCodeRequest UnBindEmailAndEmailCodeRequest

schema属性说明

UnBindEmailAndEmailCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
email 邮箱 body true string
emailCode 邮件验证码 body true string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

解绑邮箱-发送邮件验证码

接口描述:

接口地址:/api/user/web/email/unbind/send-email-code

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "captcha": "",
  3. "email": "",
  4. "token": ""
  5. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true UnBindEmailSendEmailCodeRequest UnBindEmailSendEmailCodeRequest

schema属性说明

UnBindEmailSendEmailCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
captcha 图片验证码 body false string
email 邮箱 body true string
token 图片验证码token body false string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

登录服务

邮箱 + 密码登录接口

接口描述:

接口地址:/api/user/web/login/email

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "captcha": "",
  3. "email": "",
  4. "ip": "",
  5. "isApp": true,
  6. "password": "",
  7. "token": ""
  8. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true LoginByEmailAndPasswordRequest LoginByEmailAndPasswordRequest

schema属性说明

LoginByEmailAndPasswordRequest

参数名称 参数说明 in 是否必须 数据类型 schema
captcha 图片验证码答案 body false string
email 邮箱 body true string
ip ip地址 body false string
isApp 是否APP调用,false指代PC调用 body true boolean
password 密码 body true string
token 图片验证码 token body false string

响应示例:

  1. {
  2. "expireTime": 0,
  3. "extra": {},
  4. "tenantId": 0,
  5. "token": "",
  6. "userId": 0
  7. }

响应参数:

参数名称 参数说明 类型 schema
expireTime 过期时长(秒) integer(int32) integer(int32)
extra object
tenantId integer(int32) integer(int32)
token token的值 string
userId 用户ID integer(int64) integer(int64)

响应状态:

状态码 说明 schema
200 OK TokenInfo
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

密码混登接口

接口描述:

接口地址:/api/user/web/login/identify

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "captcha": "",
  3. "identify": "",
  4. "ip": "",
  5. "isApp": true,
  6. "password": "",
  7. "prefix": "86",
  8. "token": ""
  9. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true LoginByPasswordRequest LoginByPasswordRequest

schema属性说明

LoginByPasswordRequest

参数名称 参数说明 in 是否必须 数据类型 schema
captcha 图片验证码答案 body false string
identify 用户登录唯一标识:手机号/用户名/邮箱 body true string
ip ip地址 body false string
isApp 是否APP调用,false指代PC调用 body true boolean
password 密码 body true string
prefix 手机号前缀 body false string
token 图片验证码 token body false string

响应示例:

  1. {
  2. "expireTime": 0,
  3. "extra": {},
  4. "tenantId": 0,
  5. "token": "",
  6. "userId": 0
  7. }

响应参数:

参数名称 参数说明 类型 schema
expireTime 过期时长(秒) integer(int32) integer(int32)
extra object
tenantId integer(int32) integer(int32)
token token的值 string
userId 用户ID integer(int64) integer(int64)

响应状态:

状态码 说明 schema
200 OK TokenInfo
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

根据邮件验证码登录

接口描述:

接口地址:/api/user/web/login/login-by-email-code

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "email": "",
  3. "emailCode": "",
  4. "ip": "",
  5. "isApp": true
  6. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true LoginByEmailAndEmailCodeRequest LoginByEmailAndEmailCodeRequest

schema属性说明

LoginByEmailAndEmailCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
email 邮箱 body true string
emailCode 邮件验证码 body true string
ip ip地址 body false string
isApp 是否APP调用,false指代PC调用 body true boolean

响应示例:

  1. {
  2. "expireTime": 0,
  3. "extra": {},
  4. "tenantId": 0,
  5. "token": "",
  6. "userId": 0
  7. }

响应参数:

参数名称 参数说明 类型 schema
expireTime 过期时长(秒) integer(int32) integer(int32)
extra object
tenantId integer(int32) integer(int32)
token token的值 string
userId 用户ID integer(int64) integer(int64)

响应状态:

状态码 说明 schema
200 OK TokenInfo
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

根据手机验证码登录

接口描述:

接口地址:/api/user/web/login/login-by-sms-code

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "ip": "",
  3. "isApp": true,
  4. "mobile": "15950552810",
  5. "prefix": "86",
  6. "smsCode": "4567"
  7. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true LoginByMobileAndSmsCodeRequest LoginByMobileAndSmsCodeRequest

schema属性说明

LoginByMobileAndSmsCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
ip ip地址 body false string
isApp 是否APP调用,false指代PC调用 body true boolean
mobile 手机号 body true string
prefix 手机号前缀 body false string
smsCode 短信验证码 body true string

响应示例:

  1. {
  2. "expireTime": 0,
  3. "extra": {},
  4. "tenantId": 0,
  5. "token": "",
  6. "userId": 0
  7. }

响应参数:

参数名称 参数说明 类型 schema
expireTime 过期时长(秒) integer(int32) integer(int32)
extra object
tenantId integer(int32) integer(int32)
token token的值 string
userId 用户ID integer(int64) integer(int64)

响应状态:

状态码 说明 schema
200 OK TokenInfo
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

校验密码登录是否需要验证码

接口描述:

接口地址:/api/user/web/login/login-captcha-challenge

请求方式GET

consumes:``

produces:["*/*"]

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
identify identify query false string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
401 Unauthorized
403 Forbidden
404 Not Found

发送邮件验证码

接口描述:

接口地址:/api/user/web/login/login-send-email-code

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "captcha": "",
  3. "email": "",
  4. "token": ""
  5. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true LoginByEmailSendEmailCodeRequest LoginByEmailSendEmailCodeRequest

schema属性说明

LoginByEmailSendEmailCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
captcha 图片验证码 body false string
email 邮箱 body true string
token 图片验证码token body false string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

登录发送手机验证码接口

接口描述:

接口地址:/api/user/web/login/login-send-sms-code

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "captcha": "",
  3. "mobile": "15950552810",
  4. "prefix": "86",
  5. "token": ""
  6. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true LoginByMobileSendSmsCodeRequest LoginByMobileSendSmsCodeRequest

schema属性说明

LoginByMobileSendSmsCodeRequest

参数名称 参数说明 in 是否必须 数据类型 schema
captcha 图片验证码 body false string
mobile 手机号 body true string
prefix 手机号前缀 body false string
token 图片验证码token body false string

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

登出

接口描述:

接口地址:/api/user/web/login/logout

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求参数
暂无

响应示例:

响应参数:

暂无

响应状态:

状态码 说明 schema
200 OK
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

手机号 + 密码登录接口

接口描述:

接口地址:/api/user/web/login/mobile

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "captcha": "",
  3. "ip": "",
  4. "isApp": true,
  5. "mobile": "15950552810",
  6. "password": "",
  7. "prefix": "86",
  8. "token": ""
  9. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true LoginByMobileAndPasswordRequest LoginByMobileAndPasswordRequest

schema属性说明

LoginByMobileAndPasswordRequest

参数名称 参数说明 in 是否必须 数据类型 schema
captcha 图片验证码答案 body false string
ip ip地址 body false string
isApp 是否APP调用,false指代PC调用 body true boolean
mobile 手机号 body true string
password 密码 body true string
prefix 手机号前缀 body false string
token 图片验证码 token body false string

响应示例:

  1. {
  2. "expireTime": 0,
  3. "extra": {},
  4. "tenantId": 0,
  5. "token": "",
  6. "userId": 0
  7. }

响应参数:

参数名称 参数说明 类型 schema
expireTime 过期时长(秒) integer(int32) integer(int32)
extra object
tenantId integer(int32) integer(int32)
token token的值 string
userId 用户ID integer(int64) integer(int64)

响应状态:

状态码 说明 schema
200 OK TokenInfo
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

用户名 + 密码登录接口

接口描述:

接口地址:/api/user/web/login/username

请求方式POST

consumes:["application/json"]

produces:["*/*"]

请求示例

  1. {
  2. "captcha": "",
  3. "ip": "",
  4. "isApp": true,
  5. "password": "",
  6. "token": "",
  7. "username": ""
  8. }

请求参数

参数名称 参数说明 in 是否必须 数据类型 schema
request request body true LoginByUsernameAndPasswordRequest LoginByUsernameAndPasswordRequest

schema属性说明

LoginByUsernameAndPasswordRequest

参数名称 参数说明 in 是否必须 数据类型 schema
captcha 图片验证码答案 body false string
ip ip地址 body false string
isApp 是否APP调用,false指代PC调用 body true boolean
password 密码 body true string
token 图片验证码 token body false string
username 用户名 body true string

响应示例:

  1. {
  2. "expireTime": 0,
  3. "extra": {},
  4. "tenantId": 0,
  5. "token": "",
  6. "userId": 0
  7. }

响应参数:

参数名称 参数说明 类型 schema
expireTime 过期时长(秒) integer(int32) integer(int32)
extra object
tenantId integer(int32) integer(int32)
token token的值 string
userId 用户ID integer(int64) integer(int64)

响应状态:

状态码 说明 schema
200 OK TokenInfo
201 Created
401 Unauthorized
403 Forbidden
404 Not Found