Laravel认证选型:Passport与Sanctum,搭配Spatie权限可行吗?
Laravel + Vue.js 众筹网站的认证与权限方案建议
一、认证系统选择
根据你的项目架构(Laravel + Vue.js),分两种场景选择适配方案:
- 前后端分离(Vue独立部署):优先用Laravel Sanctum。它是Laravel官方推出的轻量认证工具,专门适配SPA、移动应用这类无状态场景,支持cookie-based SPA认证(无需手动管理token存储)和API token认证,配置步骤简单,对新手友好,完全满足众筹网站的用户登录、注册、身份校验需求。
- 服务端渲染嵌入Vue组件:选Laravel Breeze或者Jetstream。Breeze是极简版认证脚手架,一键生成登录、注册、密码重置等基础页面;Jetstream在Breeze基础上增加了双因素认证、团队管理等进阶功能,适合需要快速搭建完整认证流程的场景。
二、Sanctum + Spatie 权限方案的可行性
完全可行,两者职责清晰,搭配起来非常适配众筹网站的多角色需求:
- Sanctum负责身份认证:确认当前请求的用户是合法注册用户,处理登录、token发放/校验等核心流程。
- Spatie的
laravel-permission包负责权限控制:可以给用户分配角色(比如普通捐赠者、项目发起人、平台管理员),再给角色绑定对应权限(比如发起项目、审核项目、发起捐赠),实现精细化的访问控制。
简单落地步骤
- 先安装配置Sanctum:
- 执行
composer require laravel/sanctum - 发布迁移文件并执行迁移,在
config/sanctum.php中配置SPA域名(设置stateful数组) - 在Vue项目中配置axios,让请求自动携带cookie,完成登录认证流程
- 执行
- 再安装Spatie权限包:
- 执行
composer require spatie/laravel-permission - 发布迁移文件并执行迁移,通过命令创建角色和权限(比如
php artisan permission:create-role donor、php artisan permission:create-permission donate)
- 执行
- 权限校验:
- 后端:在控制器中用
$user->can('donate')或者路由中间件can:donate校验权限 - 前端:通过API获取用户的角色/权限,控制页面按钮、路由的可见性(比如仅项目发起人能看到“发起项目”按钮)
- 后端:在控制器中用
新手注意事项
先从角色控制入手,比如先区分普通用户和管理员,再逐步细化到具体权限,避免一开始搭建过于复杂的权限体系,降低学习成本。
内容的提问来源于stack exchange,提问作者aliana
相关产品推荐
相关产品推荐

