laravel api接口+令牌认证登录

  • Post author:
  • Post category:其他





参考文档

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;

在这里插入图片描述



版权声明:本文为weixin_43995959原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。