您当前的位置: 首页 > 知识百科 > 小程序会话管理是怎样的?

小程序会话管理是怎样的?

时间:2023-07-01 14:05 阅读数:89 人阅读 分类:知识百科

  小程序会话管理是怎样的?小程序火热的背后是各种功能的开发,以及越来越多的小程序开发教程,今天我们聊聊小程序会话管理是怎样的。下面一起看看吧。

  小程序会话管理是怎样的?

  安装和配置

  第一步:使用 composer 安装 Bundle

  composer require wechat-app/session-bundle

  第二步:启用 Bundle

  // app/AppKernel.php

  public function registerBundles()

  {

  $bundles = array(

  // ...

  new SensioBundleBuzzBundleSensioBuzzBundle(),

  new SncRedisBundleSncRedisBundle(),

  new WechatAppSessionBundleWechatAppSessionBundle(),

  // ...

  );

  }

  第三步:配置依赖 Bundle

  snc/redis-bundle 处理Redis操作的部分(配置)

  sensio/buzz-bundle 处理 HTTP 请求的部分(可不配置)

  相关依赖的深入小程序配置,请参考其对应的文档。

  第四步:配置

  # app/config/config.yml

  snc_redis:

  clients:

  default:

  type: predis

  alias: default

  dsn: "redis://passwd@localhost"

  wechat_app_session:

  app_id: "wx66666" # 小程序的app id

  app_secret: "wx*****" # 小程序的app secret

  key_prefix: "wx-user:" # Redis中,用户信息的key前缀

  第五步:使用

  在安装和配置完成之后,Bundle 的功能马上就可以投入使用了,该 Bundle 只会对实现了WechatApp/SessionBundle/Controller/SessionAuthController 接口的控制器生效,对其他不是用于处理小程序请求的小程序接口不会有影响。

  处理流程请参照腾讯云提供的官方文档。

  下面举个例子:

  // src/DemoBundle/Controller/DemoController.php

  namespace DemoBundleController;

  use AppBundleControllerBaseController;

  use SensioBundleFrameworkExtraBundleConfigurationRoute;

  use SymfonyComponentHttpFoundationRequest;

  use WechatAppSessionBundleControllerSessionAuthController;

  /**

  * @Route("/demo")

  */

  class DemoController extends Controller implements SessionAuthController

  {

  /**

  * @Route("/test")

  */

  public function testAction(Request $request)

  {

  // 从 Request 的 header 的属*中获取当前请求的微信用户信息

  $wxUser = $request->attributes->get('wx_user');

  return $this->json($wxUser);

  }

  }

  访问上面 action 对应的路由,将返回一个包含用户信息 json,大致是:

  {

  "nickName": "MJ",

  "gender": 1,

  "language": "zh_CN",

  "city": "Zhuhai",

  "province": "Guangdong",

  "country": "CN",

  "avatarUrl": "头像URL",

  "openId": "owVxxxxxxxxxxx"

  }

  此时登入到 Redis 中:

  keys *

  1) "wx-user:session:xxxxxxxxxxx"

  2) "wx-user:code:owVxxxxxxxxxxx"

  wx-user:code:*** 维护用户 openid 对应的 session

  wx-user:session:*** 保存着对应于前者的用户信息

  以上两个 key 都设置了过期时间,目前定为7200秒。

  以上是后端接口部分的使用,小程序端口的部分相对来说比较简单。

  在首次获取用户信息的时候,需要调用 wx.login 和 wx.getUserInfo 接口,把获取到的 code、rawData 和 signature 一同设置到 wx.request 接口的 header 中,设置时,有特定的名称,分别是 X-WX-Code、X-WX-RawData 和 X-WX-Signature

  接口返回非200的 HTTP 状态码时,请查看接口返回的提示信息,若请求成功,则会返回你自己编写的接口所返回的信息

  该 Bundle 暂时没有提供小程序端的部分,小程序端的实现可以参考上面的说明去自行实现,或借鉴腾讯云官方提供的一个实现方式,记住,是借鉴而不是照搬,因为这个 Bundle 并非是为了搭配腾讯云提供的实现方案的,另外要注意的是,其小程序端的实现方式只实现了 wx.request 接口的包装,而关于文件上传、WebSocket 的实现都还没有包装,使用时还是需要考虑自己完善其他请求的包装。

  以上就是小程序会话管理是怎样的?全部内容了,希望上面详细的过程能给大家一定的帮助,上面只是给大家讲了大概的方法,实际操作还需要逐步完善,更多小程序内容关注微小乔,感谢大家的关注。

相关推荐:

微信小程序客服会话功能怎么实现?

小程序轮播管理是什么?如何实现管理?

附近的小程序功能升级,非管理员也能登录小程序