小程序与laravel笔记之用户登录token篇

小程序与laravel笔记

  • 小程序与laravel之用户登录token篇
    • 环境配置
    • 本文注意事项
    • 关于Laravel Sanctum 与Possport
    • 关于Sanctum的安装
    • 向users表中加字段
    • 关于从laravel端获取token
      • 拿code
      • 将code发出去
      • 利用code获取openid并返回token
    • 关于419错误
    • 关于Route [login] not defined 报错
      • 错误位置:
      • 分析:
      • 最终解决方法:

小程序与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的安装

不多介绍,直接官方文档或学院君文档走起。

  • Laravel 8 中文文档-Sanctum 认证
  • 基于 Laravel Sanctum 提供 SPA 认证解决方案

向users表中加字段

1、命令行

php artisan make:migration add_字段_to_表名_table --table=表名

2、在源码中找到\database\migrations\日期_add_表名.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

你可能感兴趣的:(laravel,小程序)