参考文档
dingo文档 https://learnku.com/docs/dingo-api/2.0.0/Authentication/1449
passport文档 https://learnku.com/docs/laravel/8.5/passport/10427
添加扩展
1.laravel项目跟目录执行 composer require dingo/api 开放api接口
2.执行 composer require laravel/passport=~9.0 弄令牌密码的(带上版本号,新版的还没研究懂)
10.4版的知道问题所在了,解决方法放在最下面
3.执行 php artisan migrate 生成令牌密码需要表
这一步如果出现秘钥长度问题则需要在AppServiceProvider加
Schema::defaultStringLength(191);
4.执行 php artisan passport:install 生成安全访问令牌(token)所需的加密键
以上步骤一套下来,可以看到项目中(这里用的是老图,passport应该用9.2版本)
都有了,才算成功
配置
接下来就是配置
项目根目录执行:php artisan vendor:publish –provider=“Dingo\Api\Provider\LaravelServiceProvider”
出现
.env里加
API_STANDARDS_TREE=prs
API_SUBTYPE=wlq
API_PREFIX=api
API_VERSION=v1
API_DEBUG=true //上线记得改为false laravel低版本如果是true的话阿里云会提示风险
config/auth里加
这里的注释去掉
Kernel里加上
routes/auth.php里
登录和注册代码
routes/api.php里
结果
然后走接口
有token就OK了
然后其他需要登录的接口带上这个token就可以了
前端是放在请求头里 参数Authorization: Bearer token
例如
postman请求
登录的时候
暂时就这么多吧,有漏掉啥以后在补
注意 laravel/passport 10.4的token生成方法生成出来的token是明文,是因为这个版本执行php artisan migrate命令的时候生成的user表里引用的扩展不对 (下面是10.4输出效果)
解决方法:
将 use Laravel\Sanctum\HasApiTokens;
替换为 use Laravel\Passport\HasApiTokens;