承接 faceauth/laravel-face-auth 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

faceauth/laravel-face-auth

Composer 安装命令:

composer require faceauth/laravel-face-auth

包简介

Laravel package for facial authentication using FaceAPI.

README 文档

README

Reconhecimento facial plug-and-play para autenticação automática de usuários em projetos Laravel.

Recursos

  • Login automático via reconhecimento facial (face-api.js)
  • Modal de autenticação facial em tempo real
  • Suporte a múltiplas imagens por usuário (1 a 5)
  • Publicação automática de assets, modelos, views e config
  • Rotas, controllers e assets prontos para uso
  • Segurança: rate limiting, nomes de arquivos aleatórios, dados sensíveis ocultos

Instalação

1. Instale o package via Composer

composer require faceauth/laravel-face-auth

2. Publique os assets, migrations, views, models e config

O comando abaixo publica tudo de uma vez (recomendado):

php artisan vendor:publish --provider="FaceAuth\\FaceAuthServiceProvider"

Se quiser publicar apenas partes específicas:

  • Apenas assets e modelos:
    php artisan vendor:publish --tag=faceauth-assets --force
  • Apenas migrations:
    php artisan vendor:publish --tag=faceauth-migrations
  • Apenas config:
    php artisan vendor:publish --tag=faceauth-config

3. Execute as migrations

php artisan migrate

4. Configure o caminho das imagens e prefixo das rotas

O caminho definido em FACEAUTH_USERS_IMAGE_PATH deve ser o diretório onde ficarão as pastas dos usuários com as fotos cadastradas. Exemplo:

FACEAUTH_USERS_IMAGE_PATH=storage/app/private
FACEAUTH_ROUTE_PREFIX=faceauth # (opcional, para customizar o prefixo das rotas)

Se necessário, ajuste também em config/faceauth.php.

Importante:

  • O diretório definido em FACEAUTH_USERS_IMAGE_PATH será usado para armazenar as fotos dos usuários, cada usuário terá uma pasta com suas imagens.
  • Garanta que esse diretório seja gravável pelo PHP e não esteja acessível diretamente pelo navegador.

5. Permissões de pasta

Garanta que o diretório definido em FACEAUTH_USERS_IMAGE_PATH seja gravável pelo PHP.

6. Adicione o botão de login facial na view desejada

Inclua o blade onde quiser exibir o botão/modal:

@include('faceauth::face-login-button')

7. Garanta o meta CSRF no seu layout principal

No <head> do seu layout principal (ex: resources/views/layouts/app.blade.php):

<meta name="csrf-token" content="{{ csrf_token() }}">

8. Ajuste o formulário de cadastro para múltiplas imagens

No seu formulário de cadastro:

<input type="file" name="face_image[]" multiple required>

No controller, aceite de 1 a 5 imagens (veja exemplo no código do package). Cada imagem será salva com nome aleatório/hash.

Como cadastrar usuários com fotos para reconhecimento facial

Para que o login facial funcione, é obrigatório que cada usuário tenha pelo menos 1 foto cadastrada (máximo 5). O upload dessas imagens deve ser feito no momento do cadastro do usuário no seu sistema.

Exemplo de formulário de cadastro

<form method="POST" action="{{ route('register') }}" enctype="multipart/form-data">
    @csrf
    <input type="text" name="name" required placeholder="Nome">
    <input type="email" name="email" required placeholder="Email">
    <input type="password" name="password" required placeholder="Senha">
    <input type="file" name="face_image[]" accept="image/*" multiple required>
    <button type="submit">Cadastrar</button>
</form>

Exemplo de código backend (Controller)

public function register(Request $request)
{
    $request->validate([
        'name' => 'required|string|max:255',
        'email' => 'required|string|email|max:255|unique:users',
        'password' => 'required|string|min:3',
        'face_image' => 'required|array|min:1|max:5',
        'face_image.*' => 'image|max:2048',
    ]);

    DB::transaction(function () use ($request) {
        $user = User::create([
            'name' => $request->name,
            'email' => $request->email,
            'password' => bcrypt($request->password),
        ]);

        foreach ($request->file('face_image') as $file) {
            $hashName = md5(uniqid() . microtime(true)) . '.' . $file->getClientOriginalExtension();
            $path = $file->storeAs("users/{$user->id}", $hashName, 'local');
            DB::table('faceauth_faces')->insert([
                'user_id' => $user->id,
                'face_image' => $path,
                'created_at' => now(),
                'updated_at' => now(),
            ]);
        }
    });

    // ... restante do fluxo
}

Importante:

  • O cadastro de fotos é obrigatório para o reconhecimento facial funcionar.
  • Adapte o exemplo acima conforme a estrutura da sua tabela de usuários.
  • O package não altera sua tabela de usuários, apenas utiliza a tabela faceauth_faces para armazenar as imagens.

Fluxo de uso

  1. Usuário acessa o botão/modal de login facial
  2. O sistema reconhece o rosto em tempo real
  3. Se reconhecido, faz login automático e redireciona para o dashboard

Segurança e Boas Práticas

  • As rotas do package já usam middleware web e rate limiting (10 req/min).
  • Os endpoints não expõem dados sensíveis, apenas identificadores genéricos.
  • Os arquivos de imagem são salvos com nomes aleatórios/hash.
  • Não exponha o diretório de imagens diretamente via webserver.
  • Se desejar, proteja a rota de imagens para exigir autenticação.
  • Para debug, veja os logs em storage/logs/laravel.log.

Customização

  • O prefixo das rotas pode ser alterado via .env ou config/faceauth.php.
  • O caminho das imagens pode ser alterado via .env ou config/faceauth.php.

Contribuição

Pull requests são bem-vindos! Abra uma issue para sugestões ou bugs.

Licença

MIT

Desenvolvido com ❤️ para facilitar o login facial no Laravel!

统计信息

  • 总下载量: 20
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: Blade

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-07-08