瀏覽代碼

修改注册等基础

lizhen_gitee 2 年之前
父節點
當前提交
35541725bd

+ 4 - 1
application/api/controller/User.php

@@ -9,12 +9,15 @@ use fast\Random;
 use think\Config;
 use think\Validate;
 
+use think\Db;
+use miniprogram\wxBizDataCrypt;
+
 /**
  * 会员接口
  */
 class User extends Api
 {
-    protected $noNeedLogin = ['login', 'mobilelogin', 'register', 'resetpwd', 'changeemail', 'changemobile', 'third'];
+    protected $noNeedLogin = ['login', 'mobilelogin', 'register', 'resetpwd', 'changeemail', 'changemobile', 'third', 'getUserOpenid','wxMiniProgramLogin'];
     protected $noNeedRight = '*';
 
     public function _initialize()

File diff suppressed because it is too large
+ 42 - 15
application/common/library/Auth.php


+ 25 - 0
extend/miniprogram/errorCode.php

@@ -0,0 +1,25 @@
+<?php
+namespace miniprogram;
+/**
+ * error code 说明.
+ * <ul>
+
+ *    <li>-41001: encodingAesKey 非法</li>
+ *    <li>-41006: 返回值为空</li>
+ *    <li>-41003: aes 解密失败</li>
+ *    <li>-41004: 解密后得到的buffer非法</li>
+ *    <li>-41005: base64加密失败</li>
+ *    <li>-41016: base64解密失败</li>
+ * </ul>
+ */
+class ErrorCode
+{
+	public static $OK = 0;
+	public static $IllegalAesKey = -41001;
+	public static $IllegalIv = -41002;
+	public static $IllegalBuffer = -41003;
+	public static $IllegalEmpty = -41006;
+	public static $DecodeBase64Error = -41004;
+}
+
+?>

+ 69 - 0
extend/miniprogram/wxBizDataCrypt.php

@@ -0,0 +1,69 @@
+<?php
+namespace miniprogram;
+/**
+ * 对微信小程序用户加密数据的解密示例代码.
+ *
+ * @copyright Copyright (c) 1998-2014 Tencent Inc.
+ */
+
+use miniprogram\errorCode;
+//include_once "errorCode.php";
+
+
+class WXBizDataCrypt
+{
+    private $appid;
+	private $sessionKey;
+
+	/**
+	 * 构造函数
+	 * @param $sessionKey string 用户在小程序登录后获取的会话密钥
+	 * @param $appid string 小程序的appid
+	 */
+	public function __construct( $appid, $sessionKey)
+	{
+		$this->sessionKey = $sessionKey;
+		$this->appid = $appid;
+	}
+
+
+	/**
+	 * 检验数据的真实性,并且获取解密后的明文.
+	 * @param $encryptedData string 加密的用户数据
+	 * @param $iv string 与用户数据一同返回的初始向量
+	 * @param $data string 解密后的原文
+     *
+	 * @return int 成功0,失败返回对应的错误码
+	 */
+	public function decryptData( $encryptedData, $iv, &$data )
+	{
+		if (strlen($this->sessionKey) != 24) {
+			return ErrorCode::$IllegalAesKey;
+		}
+		$aesKey=base64_decode($this->sessionKey);
+
+        
+		if (strlen($iv) != 24) {
+			return ErrorCode::$IllegalIv;
+		}
+		$aesIV=base64_decode($iv);
+
+		$aesCipher=base64_decode($encryptedData);
+
+		$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
+
+		$dataObj=json_decode( $result );
+		if( $dataObj  == NULL )
+		{
+			return ErrorCode::$IllegalEmpty;
+		}
+		if( $dataObj->watermark->appid != $this->appid )
+		{
+			return ErrorCode::$IllegalBuffer;
+		}
+		$data = $result;
+		return ErrorCode::$OK;
+	}
+
+}
+

Some files were not shown because too many files changed in this diff