lcharette/laravel-auth-api

为单页应用提供的基本认证API路由。

0.0.1 2021-04-04 01:52 UTC

This package is auto-updated.

Last update: 2024-09-05 09:18:54 UTC


README

为基于Laravel的SPA应用程序提供的基本可重用认证API路由。此包不包括UI,除了用于电子邮件验证和密码恢复所需的UI。这将是您基于Vue(或类似)的前端项目的起点。

这还是一个正在进行中的项目,可能还不适用于生产环境

用法

设置

composer require lcharette/laravel-auth-api

接下来,您需要更新您的用户模型,使其实现 Tymon\JWTAuth\Contracts\JWTSubject。可以使用 Lcharette\AuthApi\Auth\isJWTSubject trait 来添加所需的方法。例如

class User extends Authenticatable implements JWTSubject
{
    use Notifiable, SoftDeletes, HasFactory, isJWTSubject;
   
    ...
}

可用路由

安装后,此包将为您的Laravel应用程序添加以下路由

所有路由在成功时将返回200状态和JSON字符串。任何错误将返回为400错误代码,错误详情包含在JSON响应中。如果没有有效令牌访问路由(除了登录和注册路由),将返回403(禁止)状态代码。

限制其他路由

如果您想限制应用程序的路由,使其仅对“已登录”用户(即提供有效令牌的用户)可用,可以将 Lcharette\AuthApi\Http\Middleware\RequireAuth 中间件添加到任何路由或路由组。例如,这将使得如果没有通过请求传递有效令牌,则/list返回一个403错误。

Route::middleware([RequireAuth::class, 'api'])->group(function () {
    Route::get('/lists', [ListController::class, 'index']);
});

或者,如果路由需要用户登录,可以使用Lcharette\AuthApi\Http\Middleware\RequireGuest中间件。

从Axios (Vue.js)发送令牌

可以从登录响应中检索令牌并将其设置为未来axios请求的默认请求头。只需确保在注销或遇到401错误时删除令牌即可。

axios.post("/api/login", { email, password })
    .then(resp => {
        axios.defaults.headers.common['Authorization'] = 'Bearer ' + resp.data.access_token
    })
    .catch(err => {
        localStorage.removeItem("access_token");
    });

待办事项

  • 吊销令牌
  • 更新配置文件
  • 更新密码
  • 双因素认证
  • 密码重置
  • 电子邮件确认
  • 自定义用户Trait / 接口
  • 添加更多自定义化选项

许可证

此包根据MIT许可证开源。