grantholle/laravel-altcha

为Altcha提供的Laravel服务器端实现。

1.1.0 2024-03-19 20:30 UTC

This package is auto-updated.

Last update: 2024-09-08 14:36:13 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

这是Altcha(https://altcha.org/,一个不需要任何第三方服务的证明劳动工作量验证码)的服务器端Laravel实现。

安装

您可以通过composer安装此包

composer require grantholle/laravel-altcha

可选,使用以下命令发布配置文件

php artisan vendor:publish --tag="altcha-config"

用法

.env(或发布的配置文件)中,设置以下变量

# Required, sort of like a password
ALTCHA_HMAC_KEY=
# Optional, defaults to SHA-256. Can be SHA-384 or SHA-512
# ALTCHA_ALGORITHM="SHA-256"

默认情况下,该包注册了一个/altcha-challenge端点,以便在前端使用。

前端

遵循前端集成,使用以下代码段获取挑战

<altcha-widget challengeurl="/altcha-challenge"></altcha-widget>

具体实现将根据您的前端不同而有所不同,但这里提供了一个示例Vue组件

<template>
  <altcha-widget challengeurl="/altcha-challenge" @statechange="stateChanged"></altcha-widget>
</template>

<script setup>
import 'altcha'

const emit = defineEmits(['update:modelValue'])
const stateChanged = ev => {
  if (ev.detail.state === 'verified') {
    emit('update:modelValue', ev.detail.payload)
  }
}
</script>

在Inertja.js表单中,您可以使用此组件如下所示

<template>
  <form @submit.prevent="form.post('/login')">
    <label for="email">Email</label>
    <input type="email" name="email" v-model="form.email">
    
    <label for="password">Password</label>
    <input type="password" name="password" v-model="form.password">
    
    <Altcha v-model="form.token" />
    
    <button type="submit">Submit</button>
  </form>
</template>

<script setup>
import { useForm } from '@inertiajs/inertia-vue3'
// This is the component we made above
import Altcha from '@/components/forms/Altcha.vue'

const form = useForm({
  email: null,
  password: null,
  token: null,
})
</script>

后端验证

要验证前端生成的token/payload,您可以使用一个名为ValidAltcha的规则,假设token作为请求中的token传递

use GrantHolle\Altcha\Rules\ValidAltcha;

$request->validate([
    'email' => ['required', 'email'],
    'password' => ['required'],
    'altcha' => ['required', new ValidAltcha()],
]);

测试

composer test

更新日志

有关最近更改的更多信息,请参阅更新日志

贡献

有关详细信息,请参阅贡献指南

安全漏洞

请参阅我们的安全策略,了解如何报告安全漏洞。

致谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件