特点

CabloyJS内置了短信认证模块a-authsms,可以实现手机短信认证的功能。主要有以下特性:

  1. 提炼出通用的手机短信验证机制,可以通过提供者的方式快速对接各类短信服务提供商
  2. 通过手机短信验证实现用户注册用户登录用户认证等功能
  3. 内置短信服务提供者
    • 测试版本:不需要开通实际的短信服务,即可进行开发调试
    • 阿里云:只需填写参数即可快速对接部署阿里云短信服务
    • 持续增加对第三方服务的支持

截图

1. 用户注册

1

2. 用户登录

2

3. Kitchen-sink - 短信认证

3

4. Kitchen-sink - 测试短信服务提供者

4

如何使用

1. 配置短信认证

默认情况下,模块提供的短信认证会自动启用,可通过以下途径调整次序禁用

1.1 调整次序

比如,我们现在有两个用户认证方式:a-authsimple/a-authsms,显示效果如下:

5

我们希望a-authsms优先显示,那么只需修改项目的配置文件:

src/backend/config/config.local.js

  // module config
  config.modules = {
    ...
    'a-login': {
      providers: [
        {
          module: 'a-authsms',
          provider: 'authsms',
        },
        {
          module: 'a-authsimple',
          provider: 'authsimple',
        },
      ],
    },
    ...
  };

1.2 禁用

如果我们想禁用a-authsimple,那么只需设置disable: true,如下:

  // module config
  config.modules = {
    ...
    'a-login': {
      providers: [
        {
          module: 'a-authsms',
          provider: 'authsms',
        },
        {
          disable: true,
          module: 'a-authsimple',
          provider: 'authsimple',
        },
      ],
    },
    ...
  };

最终显示效果如下:

6

2. 配置短信服务提供者

2.1 测试短信服务提供者

默认情况下,使用内置的测试短信服务提供者,当用户输入手机号码,点击发送认证码按钮时,会自动在控制台打印一个随机的认证码,从而方便开发调试,效果如下:

7

2.2 阿里云短信服务提供者

模块还内置了阿里云短信服务提供者,只需修改项目的配置文件即可激活:

  // module config
  config.modules = {
    ...
    'a-authsms': {
      sms: {
        provider: {
          // default: '',
          default: 'aliyun',
        },
        providers: {
          aliyun: {
            accessKeyId: 'LTAIVnmixsvYC4cdF',
            secretAccessKey: 'V5F7Ke7w8QgZVpcvbYcHq32FKwt2ew',
            endpoint: 'https://dysmsapi.aliyuncs.com',
            apiVersion: '2017-05-25',
            signName: 'Cabloy商店',
            templates: {
              mobileVerify: 'SMS_152015055',
              signup: 'SMS_152015055',
              signin: 'SMS_152015055',
            },
          },
        },
      },
    },
  };
  ...

signNametemplates是与阿里云短信服务提供者相关的参数,具体数据请参照阿里云的提示获取

mobileVerifysignupsignin是预定义的场景,可以针对不同的场景指定单独的消息模板