Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

rc-slider-captcha

Package Overview
Dependencies
Maintainers
0
Versions
31
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rc-slider-captcha

React slider captcha component.

  • 1.7.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
695
increased by47.25%
Maintainers
0
Weekly downloads
 
Created
Source

rc-slider-captcha

npm GitHub

React 滑块验证码组件。

查看文档和示例

example

掘金文章介绍地址

特性

  • 简单易用
  • 适配 PC 和移动端
  • 兼容 IE11 和现代浏览器
  • 使用 TypeScript 开发,提供完整的类型定义文件

安装

npm install rc-slider-captcha
yarn add rc-slider-captcha
pnpm add rc-slider-captcha

使用

import SliderCaptcha from 'rc-slider-captcha';

const Demo = () => {
  return (
    <SliderCaptcha
      request={async () => {
        return {
          bgUrl: 'background image url',
          puzzleUrl: 'puzzle image url'
        };
      }}
      onVerify={async (data) => {
        console.log(data);
        // verify data
        return Promise.resolve();
      }}
    />
  );
};

API

import SliderCaptcha, {
  SliderCaptchaProps,
  VerifyParam,
  Status,
  ActionType
} from 'rc-slider-captcha';

SliderCaptcha

参数说明类型默认值
request请求背景图和拼图() => Promise<{ bgUrl:string; puzzleUrl:string;}>-
onVerify用户操作滑块完成后触发,主要用于验证,返回 resolve 表示验证成功,reject 表示验证失败。(data: VerifyParam) => Promise<any>-
mode显示模式。embed - 嵌入式, float - 触发式, slider - 只有滑块无拼图。'embed' | 'float' | 'slider''embed'
bgSize背景图尺寸{ width: number; height: number; }{ width: 320, height: 160 }
puzzleSize拼图尺寸和偏移调整,默认宽度 60,高度为背景图高度。{ width: number; height: number; left: number; top: number; }{ width: 60 }
tipText提示文本配置{ default: ReactNode; loading: ReactNode; moving: ReactNode; verifying: ReactNode; success: ReactNode; error: ReactNode; errors: ReactNode; loadFailed: ReactNode; }-
tipIcon提示图标配置{ default: ReactNode; loading: ReactNode; error: ReactNode; success: ReactNode; refresh: ReactNode; loadFailed: ReactNode; }-
actionRef常用操作,比如刷新React.MutableRefObject<ActionType | undefined>;-
showRefreshIcon显示右上角刷新图标booleantrue
limitErrorCount限制连续错误次数。当连续错误次数达到限制时,不允许操作滑块和刷新图标,必须手动点击操作条刷新。0 表示不限制错误次数。number0
jigsawContent拼图区域自定义内容,需要自己定义绝对定位和 zIndex 。ReactNode-
loadingBoxProps拼图区域加载配置,支持 div 属性。{ icon: ReactNode; text: ReactNode }-
autoRequest自动发起请求booleantrue
autoRefreshOnError验证失败后自动刷新booleantrue
errorHoldDuration错误停留多少毫秒后自动刷新,仅在 autoRefreshOnError=true 时生效。number500
loadingDelay设置 loading 状态延迟的时间,避免闪烁,单位为毫秒。number0
placement浮层位置。仅在 mode=float 时生效。'top' | 'bottom''top'
precision数字精度。为避免内部计算产生精度问题,只对 onVerify 方法参数 x y sliderOffsetX 生效。number | false7
className容器类名string-
style容器样式CSSProperties-
styles配置内置模块样式{ panel?: CSSProperties; jigsaw?: CSSProperties; bgImg?: CSSProperties; puzzleImg?: CSSProperties; control?: CSSProperties; indicator?: CSSProperties; }-

连续错误次数说明:当用户操作滑块验证成功后,将重置连续错误次数为 0 。当用户点击限制错误次数操作条刷新时也将错误次数重置为 0 。

VerifyParam

type VerifyParam = {
  x: number; // 拼图 x 轴移动值。(拼图和滑块按钮移动距离不一样,这里指的是计算后的拼图移动距离。)
  y: number; // 用户操作按钮或拼图 y 轴移动值。(按下鼠标到释放鼠标 y 轴的差值。)
  sliderOffsetX: number; // 滑块 x 轴偏移值。(暂时没有什么场景会用到。)
  duration: number; // 操作持续时长,单位毫秒。
  trail: [number, number][]; // 移动轨迹
  targetType: 'puzzle' | 'button'; // 操作 dom 目标。 puzzle-拼图 button-滑块按钮。
  errorCount: number; // 连续错误次数
};

如果对安全比较重视的,可以通过 y duration trail 等结合算法判断是否人为操作,防止一些非人为操作破解滑块验证码。

大部分情况下,只需要将 x 传给后端即可(如果背景图和滑块有比例缩放,可能需要自己计算 x 乘以 缩放比例)。

actionRef

提供给外部的操作,便于一些特殊场景自定义。

export type ActionType = {
  refresh: (resetErrorCount?: boolean) => void; // 刷新,参数为是否重置连续错误次数为0
  status: Status; // 每次获取返回当前的状态,注意它不是引用值,而是一个静态值。部分场景下配合自定义刷新操作使用。
};

export enum Status {
  Default = 1, // 默认
  Loading, // 加载中
  Verify, // 验证中
  Success, // 验证成功
  Error, // 验证失败
  LoadFailed // 加载失败
}

CSS 变量

变量名说明默认值
--rcsc-primary主色#1991fa
--rcsc-primary-light主色-浅#d1e9fe
--rcsc-error错误色#f57a7a
--rcsc-error-light错误色-浅#fce1e1
--rcsc-success成功色#52ccba
--rcsc-success-light成功色-浅#d2f4ef
--rcsc-border-color边框色#e4e7eb
--rcsc-bg-color背景色#f7f9fa
--rcsc-text-color文本色#45494c
--rcsc-button-color按钮颜色#676d73
--rcsc-button-hover-color鼠标移入时,按钮颜色#ffffff
--rcsc-button-bg-color按钮背景颜色#ffffff
--rcsc-panel-border-radius图片容器边框圆角2px
--rcsc-control-height滑轨高度42px

Keywords

FAQs

Package last updated on 26 Nov 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc