kda/laravel-authentication

2.1.0 2024-08-29 10:29 UTC

README

Latest Version on Packagist Total Downloads

关于

这是laravel/ui的无头和无控制器重写。主要目标是让它比laravel/fortify更简单。

它围绕一个门面AuthManager构建。

安装

composer require kda/laravel-authentication

更新你的Authenticatable模型

如果你需要使用邮箱验证,你可以通过添加以下合约和特性来修改你的模型

<?php

namespace App\Models;

use Illuminate\Auth\MustVerifyEmail;
use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract;

class User extends Authenticatable implements MustVerifyEmailContract
{
   use MustVerifyEmail;
 
}

路由

由于它是无控制器的,你需要创建自己的控制器和路由。你可以使用此包提供的:kda/laravel-authentication-controllers。默认情况下,一些是强制性的,例如password.reset路由,它默认由laravel password broker使用,或者verification.verify路由。

你可以通过使用createResetPasswordUrlUsing方法之一来覆盖它

    AuthManager::createResetPasswordUrlUsing(function ($user, string $token) {
        return 'https://myfrontend.com/reset?token=' . $token;
    })

路由清单

  • [ ] 认证
  • [ ] 注册
  • [ ] 请求重置密码链接
  • [ ] 重置密码 password.reset
  • [ ] 验证邮箱 verification.verify

路由视图清单

  • [ ] 登录表单
  • [ ] 注册表单
  • [ ] 请求重置密码表单
  • [ ] 重置密码表单
  • [ ] 修改密码表单

使用

基本上,我们有4个主要功能

注册 AuthManager::register() 认证 AuthManager::authenticate() 重置密码 AuthManager::resetPassword() 修改密码 AuthManager::changePassword()

所有主要功能在使用之前都需要调用request($request)

高级使用

流程键

如果你想要管理多个认证和注册类型,你可以使用流程键来自定义库的行为。这是一个示例,不能直接使用,你仍然需要在配置文件中配置你的认证。例如

    // in a provider

    AuthManager::createUserUsing(function($flow_key,$request){
        return match($flow_key){
            'teacher'=> Teacher::create($request->all()),
            'student'=> Student::create($request->all()),
        };
    });

    AuthManager::afterCreatingUser(function($flow_key,$request,$user){
        return match($flow_key){
            'teacher'=> $user->fill(['role'=>'teacher'])->save(),
            'student'=> $user->fill(['role'=>'student'])->save(),
        };
    });

    AuthManager::guard(function($flow_key){
        return match($flow_key){
            'teacher'=> 'web',
            'student'=> 'api'
        }
    });

    // in the controllers methods of your choice:

    AuthManager::flowKey('teacher')->request($request)->register()->authenticate(); // 

    AuthManager::flowKey('student')->request($request)->register(); // student needs to authenticate again

变更日志

请参阅CHANGELOG以获取最近更改的更多信息。

贡献

请参阅CONTRIBUTING以获取详细信息。

安全漏洞

请查看我们的安全策略了解如何报告安全漏洞。

鸣谢

许可

MIT许可(MIT)。请参阅许可文件以获取更多信息。