小程序与laravel笔记
小程序与laravel之用户登录token篇
后端laravel,前端采用微信小程序,关于登录模块,看文档及问度娘,加上写代码近一个周,终于搞出一点眉目。特记下来,别忘了。
环境配置
- Laravel 8.16.1
- 微信小程序基础库 2.14
本文注意事项
为了防止混淆。我把自己的服务器端称为laravel端。
关于Laravel Sanctum 与Possport
先看两个扩展包的介绍
Laravel Sanctum 为 SPA(Single Page Application,单页面应用)、移动 App 以及基于令牌的简单 API 提供了一个轻量级的认证系统。Sanctum 允许为应用的每个用户账户生成多个 API 令牌,这些令牌可用于授予权限/作用域来指定对应令牌允许执行的操作。
在 Laravel 中,实现基于传统表单的登陆和授权已经非常简单,但是如何满足 API 场景下的授权需求呢?在 API 场景里通常通过令牌来实现用户授权,而非维护请求之间的 Session 状态。在 Laravel 项目中使用 Passport 可以轻而易举地实现 API 授权认证,Passport 可以在几分钟之内为你的应用程序提供完整的 OAuth2 服务端实现。Passport 是基于由 Andy Millington 和 Simon Hamp 维护的 League OAuth2 server 建立的。
都挺好,但是我在Possport搞了好长一段时间,总是出问题。So~,果断转为Sanctum。
关于Sanctum的安装
不多介绍,直接官方文档或学院君文档走起。
向users表中加字段
1、命令行
php artisan make:migration add_字段_to_表名_table --table=表名
2、在源码中找到\database\migrations\日期_add_表名.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddOpenidToUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('openid');
$table->string('nick_name');
$table->string('avatar_url');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
//
});
}
}
3、运行命令
php artisan migrate
完活
关于从laravel端获取token
首先我们从微信端拿到code,把code传给laravel端,从laravel端向微信端发送获取openid的请求。
拿code
第1步,从微信端拿code,在微信小程序中进行。 我直接在utils
目录下写了一个工具文件。
const wxlogin =()=>{
return new Promise((resolve,rejct)=>{
wx.login({
timeout:10000,
success:(result)=>{
resolve(result)
},
fail:(error)=>{
rejct(error)
}
})
})
}
const wxGetUserInfo