一款小而美的开源滑动验证码组件

简介: 一款小而美的开源滑动验证码组件

hi, 大家好, 我是徐小夕, 今天给大家分享一款非常有意思的开源组件, 可以实现我们平时开发中的滑动验证码需求, 当然也是技术圈小伙伴奋战了无数个黑夜和白天的结果, 值得好好推荐一下.

image.png

react-rotate-captcha 是一款开箱即用的滑动验证码 React 组件,基于 isszz/rotate-captcha 做的二次开发;结合了腾讯防水墙,增加安全策略.

具体策略由两部分组成:

  • policie默认策略
  • rules策略组规则

策略规则:

  • limit: 上限次数,达到峰值后重新验证,0不限制
  • time: 使用期限,过期后重新验证,0不限制
  • routers: 匹配要授权的路由组,null全匹配

这里的路由是指验证通过后,要执行操作的路由,而不是验证操作时的路由

image.png

原理:

  • 验证通过后将颁发:sid、ticket
  • 执行操作时验证决定是否通过,通过就去和执行的route进行匹配
  • 从而避免跨权,跨范围执行

优点:

  • 针对不同应用场景提供验证
  • 例如登录验证有效期30分钟,后台操作按次数进行身份验证

后端提供 Laravel 扩展:levi/laravel-rotate-captcha ,可直接使用或根据 Api 接口定制.

效果如下:

image.png

设计思路

image.png

image.png

具体的使用安装方式如下:

// yarn安装
yarn add react-rotate-captcha
// pnpm安装
pnpm add react-rotate-captcha

使用方式如下:

// 1. 通过status唤起
import { useState } from 'react';
import RotateCaptcha from "react-rotate-captcha";
function App() {
    const [open, setOpen] = useState(true);
    return <RotateCaptcha open={open} onClose={() => setOpen(false)} />
}
// 2. 通过Instance唤起
import RotateCaptcha from "react-rotate-captcha";
function Page() {
    const captcha = RotateCaptcha.useCaptchaInstance();
    return (
        <button onClick={() => captcha.open()}>click it</button>
    );
}
function App() {
    return (
        <RotateCaptcha>
            <Page />
        </RotateCaptcha>
    );
}

当然我们也可以使用 ref 来实现同样的效果:

import { useRef } from 'react';
import RotateCaptcha, { CaptchaInstance } from "react-rotate-captcha";
function App() {
    const ref = useRef<CaptchaInstance>(null);
    return (
        <RotateCaptcha ref={ref}>
            <button onClick={() => ref.current!.open()}>click it</button>
        </RotateCaptcha>
    );
}

基本属性介绍:

image.png

同时该组件接受5个方法,只有 onCloseresult 是同步函数,其余全部为异步函数:

image.png

更详细的用法大家可以在github上学习参考:

github.com/cgfeel/reac…

demo 目前提供了 webpackvite 版本的, 可以在: codesandbox.io/p/devbox/re… 体验.

如果大家觉得不错, 欢迎点赞反馈, 不辜负每一位开源贡献者的努力, 让技术更美好~


目录
相关文章
|
前端开发 机器人 数据安全/隐私保护
Flutter笔记:手写并发布一个人机滑动验证码插件
写 Flutter 项目时,遇到需要滑块验证码功能。滑块验证码属于人机验证码的一种,看起来像是在一个图片中“挖去”了一块,然后通过用户手动操作滑块,让被“挖去”的部分移回来。由于我不想使用各种第三方模块,因此决定自己实现一个初版以后慢慢添砖加瓦。本文是对第一个版本的一点记录。
384 1
|
5月前
|
JavaScript 前端开发 安全
一个贼丝滑的 Vue 2 扩展组件,开源且免费
一个贼丝滑的 Vue 2 扩展组件,开源且免费
|
5月前
|
UED 开发者 Java
触摸未来:Vaadin UI设计原则如何引领你打造触动人心的数字体验
【8月更文挑战第31天】Vaadin UI设计原则致力于提升Web应用的用户体验,其核心理念包括简洁性、一致性、直观性和可访问性。通过简化界面、统一设计风格、增强直观操作及优化无障碍访问,开发者能构建出高效且吸引人的应用。本文详细介绍每个原则,并提供实用的Java代码示例,帮助开发者在Vaadin平台上实现卓越的用户体验,提升用户满意度与应用成功率。
68 0
|
5月前
|
前端开发 UED 开发者
无障碍设计的魔法:JSF让每个用户都能畅游数字世界!
【8月更文挑战第31天】本文介绍如何使用JavaServer Faces (JSF)构建无障碍Web应用,确保所有用户都能访问和使用。文章通过实际代码示例展示了如何利用ARIA属性增强组件、实现键盘导航、提供文本替代以及使用语义化标签等技术。无障碍设计不仅是道德责任,也是提升用户体验的关键。通过这些方法,JSF可以帮助开发者创建更加公平和包容的应用。
41 0
|
人工智能 文字识别 安全
温习数据算法—js滑块验证码
温习数据算法—js滑块验证码
|
8月前
|
移动开发 小程序 前端开发
【经验分享】如何实现在支付宝小程序内的骨架屏效果
【经验分享】如何实现在支付宝小程序内的骨架屏效果
93 6
无人问津的设置页面,如何做到小而精美?
无人问津的设置页面,如何做到小而精美?
88 0
|
JavaScript 前端开发 程序员
程序员的未来职场选择;点击按钮发送验证码怎么显得水平高;自学 VUE ,可以直接做项目吗|极客观点
程序员的未来职场选择;点击按钮发送验证码怎么显得水平高;自学 VUE ,可以直接做项目吗|极客观点
|
数据可视化 Java 容器
Java实现拼图小游戏(7)—— 计步功能及菜单业务的实现
注意由于我们计步功能的步数要在重写方法中用到,所以不能将初始化语句写在方法体内,而是要写在成员位置。在其名字的时候也要做到“见名知意”,所以我们给它起名字为step
340 0
Java实现拼图小游戏(7)—— 计步功能及菜单业务的实现

热门文章

最新文章