微信小程序登录 .net 后端实现

  •  1:前端获取用户凭证code 传送请求获得openId(用户唯一标识)    

在页面的Onlaunch 方法中,调用wx.login 方法

https://developers.weixin.qq.com/miniprogram/dev/api/wx.login.html

 

这一步获取登录凭证,通过凭证调用本地后台接口,获取用户openId sessionKey等,本地后台的接口调用方法参考第四步

注意点:

      1:通常我们会把用户的session_key 存取到后台的session会话中,但是在微信小程序不会自动保存用户的session id, 这就需要将返回的session id 存在local storage中,当再次向后台请求时,在header 中带上 cookie , 看第二步图

      2:that.globalData.info = res.data.data.string, 将一个object 里的string 赋值给globalData.info, 这个时候info的值仍然是indefined, 而 res.data.data是一个对象,会赋值成功,这是为什么呢?参考https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxs/06datatype.html

  • 2:前端获取用户信息并发送本地接口请求解码

 

注意点

1:当用户未授权登录时,此时不会弹框,需要跳出授权只能用<button open-type="getUserInfo"/>

2:向后台发送解码请求时,在header传 cookie, 标识是同一个会话,如图

 

  • 3:后端获取用户 session_key 和 open id(.net)

 

注意点

   1:如果获取成功, errcode不会返回

   2:  使用Asp.net core Session

      安装包:Microsoft.AspNetCore.Session

      在startup.cs 中进行配置,添加服务和注入session,网上有参考,不赘述

   3: 使用vs 进行build时,以管理员模式运行

   4: 微信要求服务器使用TLS1.2协议,如何在windows中升级TLS1.2

      更改注册表,网上有资源不赘述

  •  4:后端进行加密信息解码

 

.net 加密解码回顾:

常见的加密算法包括md5,sha1,aes,base64, 而 AES是可逆的对称加密算法

Base64是一种编码方式,就是把一串二进制转换成另外一种二进制串

用于图片存储等,即把图片转换成一种二进制码,从而计算机能打印

AES:

https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.aesmanaged?redirectedfrom=MSDN&view=netframework-4.7.2

.net core session

TLS1.2

JsonConvert 反序列化时, 如果遇到特殊字符时,会报错的解决方法

参考资源

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html

猜你喜欢

转载自www.cnblogs.com/birdbird/p/10663754.html