阿里云滑块awsc

AWSC的语言配置

需要预设定语言配置,多语言切换需要配置upLang来联动使用才有效果

关于reset后宽度初始化和自定义样式不一致问题

可以直接在配置中指定固定宽度

  1. width: "500",

验证失败后重置滑块状态

  1. window.nc.reset();

源码

  1. <template>
  2. <div class="verify-box">
  3. <div id="nc"></div>
  4. </div>
  5. </template>
  6. <script setup lane="ts">
  7. import { onMounted, watchEffect } from "vue";
  8. import { useGlobal } from "@/hooks/useGlobal";
  9. import { useMessage } from "naive-ui";
  10. import * as LoginAction from "@/api/login";
  11. const { appConfig } = useGlobal();
  12. const message = useMessage();
  13. const emit = defineEmits(["verifySuccess"]);
  14. var myLang = {
  15. id: {
  16. // //加载状态提示。
  17. // LOADING: "加载中...",
  18. // //等待滑动状态提示。
  19. // SLIDE: "请向右滑动验证",
  20. // //验证通过状态提示。
  21. // SUCCESS: "验证通过",
  22. // //验证失败触发拦截状态提示。
  23. // ERROR: "非常抱歉,网络出错了...",
  24. // //验证失败触发拦截状态提示。
  25. // FAIL: "验证失败,请点击重试",
  26. //加载状态提示。
  27. LOADING: "Memuatkan...",
  28. //等待滑动状态提示。
  29. SLIDE: "Silakan slide kanan untuk",
  30. //验证通过状态提示。
  31. SUCCESS: "passed",
  32. //验证失败触发拦截状态提示。
  33. ERROR: "Maaf, ada kesalahan jaringan...",
  34. //验证失败触发拦截状态提示。
  35. FAIL: "Verifikasi gagal, silakan klik Coba lagi",
  36. },
  37. en: {
  38. //加载状态提示。
  39. LOADING: "Loading...",
  40. //等待滑动状态提示。
  41. SLIDE: "Please swipe right to verify",
  42. //验证通过状态提示。
  43. SUCCESS: "Verification passed",
  44. //验证失败触发拦截状态提示。
  45. ERROR: "I am very sorry, there is a network error...",
  46. //验证失败触发拦截状态提示。
  47. FAIL: "Verification failed, please click retry",
  48. },
  49. };
  50. onMounted(() => {
  51. watchEffect(() => {
  52. if (appConfig.showLang) {
  53. fetchConfig();
  54. }
  55. });
  56. });
  57. function fetchConfig() {
  58. LoginAction.fetchAfsConfig()
  59. .then((res) => {
  60. console.log(res.afsConfig, "fetchConfig");
  61. removeVertify();
  62. onInit(res.afsConfig);
  63. })
  64. .catch((err) => console.error(err));
  65. }
  66. function removeVertify() {
  67. let dom = document.getElementById("nc");
  68. dom.innerHTML = "";
  69. }
  70. function onInit(afsConfig) {
  71. AWSC.use("nc", function (state, module) {
  72. // 初始化
  73. window.nc = module.init({
  74. // 应用类型标识。它和使用场景标识(scene字段)一起决定了滑动验证的业务场景与后端对应使用的策略模型。您可以在阿里云验证码控制台的配置管理页签找到对应的appkey字段值,请务必正确填写。
  75. appkey: afsConfig.appKey,
  76. //使用场景标识。它和应用类型标识(appkey字段)一起决定了滑动验证的业务场景与后端对应使用的策略模型。您可以在阿里云验证码控制台的配置管理页签找到对应的scene值,请务必正确填写。
  77. scene: afsConfig.scene,
  78. // 声明滑动验证需要渲染的目标ID。
  79. renderTo: "nc",
  80. language: appConfig.showLang,
  81. width: "500",
  82. upLang: myLang,
  83. // test: module.TEST_PASS, // 测试滑动通过状态
  84. // test: module.TEST_BLOCK, // 测试滑动失败状态
  85. //前端滑动验证通过时会触发该回调参数。您可以在该回调参数中将会话ID(sessionId)、签名串(sig)、请求唯一标识(token)字段记录下来,随业务请求一同发送至您的服务端调用验签。
  86. success: function (data) {
  87. emit("verifySuccess", data);
  88. },
  89. // 滑动验证失败时触发该回调参数。
  90. fail: function (failCode) {
  91. window.console && console.log(failCode);
  92. window.nc.reset();
  93. message.warning("Verification failed. Please try again later.");
  94. },
  95. // 验证码加载出现异常时触发该回调参数。
  96. error: function (errorCode) {
  97. window.nc.reset();
  98. window.console && console.log(errorCode);
  99. },
  100. });
  101. });
  102. }
  103. </script>
  104. <style lang="scss" scoped>
  105. #nc {
  106. width: 100% !important;
  107. display: contents;
  108. .nc_scale {
  109. width: 100% !important;
  110. }
  111. }
  112. :deep(.nc-container #nc_1_wrapper) {
  113. width: 100%;
  114. height: 36px;
  115. line-height: 36px;
  116. #nc_1_n1t,
  117. #nc_1__bg,
  118. #nc_1_n1z,
  119. #nc_1__scale_text,
  120. .nc-lang-cnt {
  121. height: 36px;
  122. box-sizing: border-box;
  123. line-height: 36px;
  124. }
  125. }
  126. .verify-box {
  127. width: 100%;
  128. height: 34px;
  129. margin-bottom: 2.25rem;
  130. }
  131. </style>