.NET CORE+uniapp 微信小程序开发 解密用户信息与手机号

背景介绍

我们公司开发一个微信小程序,采用前后端分离的方式,后端使用了.NET CORE的框架,前端则是使用了目前非常火热的uniapp,以迎合不同平台的开发需求。
在开发小程序的过程中,虽然有些磕磕碰碰,但也算是比较顺利的完成了。其中,有一个地方值得我在这里记录下来,以防后人踩坑:那就是微信小程序的解密。
在我们开发的小程序当中,需要获取微信用户的用户信息(重要的是unionid)以及手机号。因此,需要对加密数据进行AES解密。为此,我们开发了一个API,在这个API中将对两种加密数据进行解密。

小程序用户信息解密流程

我们需要记录用户的用户信息与手机号,所以需要调用微信的getPhoneNumber与getUserInfo,获取这两个API返回的加密数据,使用从微信换取的sessionKey去解密数据。
流程如下:
1、小程序生命周期开始:使用code换取sessionkey,并记录在redis中,返回thirdsession给前端;
2、点击用户信息按钮:在回调中获取用户加密数据,使用微信API的checksession以确认sessionkey没有过期,若过期则重新获取code;
3、点击用户手机号按钮:与用户信息按钮同理;
4、调用自己服务端API:若checksession均success即不需要使用code重新换取sessionkey,则直接使用thirdsession对应的sessionkey解密;否则,先使用thirdsession对应的sessionkey解密,失败则再使用新code换取的sessionkey解密。

补充注意:微信的checksession有问题,此API返回success,但是有时使用redis的sessionkey进行解密会失败。其中一种解决方式是:当发现异常信息为padding。。。时,告知前端直接重新获取新code以再次解密;当再次解密也失败时,则重新回到小程序首页,让用户重新点击两个按钮,整个流程重新来过。

资料查询

1、微信官方文档
2、.NET CORE的session管理、REDIS使用
AES解密,需要加密字符串、iv以及对应的key。当这三者
3、微信小程序的解密流程

Windows下Redis安装与使用

1、云服务器安装Redis服务器并启动服务
Windows的Redis下载
本人下载的是Redis 5.0.9 for Windows的Redis-x64-5.0.9.zip;

Redis安装步骤
按照此步骤,将Redis设置为服务,以免误关闭cmd导致Redis服务中断;

这里使用的是阿里云服务器,需要在安全组添加6379内网访问,并且在防火墙入站中添加规则;

2、Redis配置
在Redis的解压目录下,找到redis.windows.conf文件;设置几处地方以允许远程连接——
(1)查找 “bind 127.0.0.1“ ,注释掉这一句(前面加#);这个是设置访问IP白名单
(2)protected-mode yes 改为 protected-mode no;关闭保护模式,允许远程连接;
(3)可选:查找 # requirepass foobared ,加入 requirepass 密码,这样可以为你的Redis服务器设置访问密码。

3、Redis管理工具、远程连接Redis服务器

RDM(Redis Desktop Manager)
资源就不贴出来了,介绍连接的操作
RDM连接服务器
Name随意;Host填服务器IP;Port默认6379端口;Auth填入密码,无密码可不填;
测试连接是否可以,可以就按OK就连上了;其余的和一般数据库管理工具类似。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在.NET Core 3.1中实现微信小程序登录,您可以遵循以下步骤: 1. 首先,您需要在微信开放平台上注册一个帐户并创建一个小程序。这将为您提供用于与微信服务器进行通信的APPID和AppSecret。 2. 在.NET Core 3.1项目中,您可以使用HttpClient来与微信服务器进行通信。可以在Startup.cs文件的ConfigureServices方法中添加一个HttpClient实例: ```csharp services.AddHttpClient("WeChatClient", c => { c.BaseAddress = new Uri("https://api.weixin.qq.com/"); }); ``` 3. 在您的登录控制器或服务中,您可以注入上面创建的HttpClient,并使用APPID、AppSecret以及用户提供的code来构建一个请求以获取用户的OpenId和SessionKey。 ```csharp private readonly IHttpClientFactory _httpClientFactory; public WeChatLoginService(IHttpClientFactory httpClientFactory) { _httpClientFactory = httpClientFactory; } public async Task<WeChatUserInfo> GetUserInfo(string code) { var client = _httpClientFactory.CreateClient("WeChatClient"); var response = await client.GetAsync($"sns/jscode2session?appid={appId}&secret={appSecret}&js_code={code}&grant_type=authorization_code"); if (response.IsSuccessStatusCode) { var content = await response.Content.ReadAsStringAsync(); var userInfo = JsonSerializer.Deserialize<WeChatUserInfo>(content); return userInfo; } else { // handle error } } ``` 4. 一旦您获得了用户的OpenId和SessionKey,您可以将其存储在您的数据库中,或者使用它们来进行进一步的用户认证和授权。 请注意,上面的代码片段仅为示例,实际实现可能会根据您的需求而有所变化。此外,您还需要处理错误情况、存储用户信息等等。 ### 回答2: 要实现微信小程序登录,可以使用.NET Core 3.1结合微信登录API来实现。下面是一个简单的步骤示例: 1. 首先,在微信公众平台申请并获取小程序的AppID和AppSecret。 2. 创建一个.NET Core 3.1的项目,并使用NuGet包管理器安装相关依赖,例如`微信授权登录`、`Newtonsoft.Json` 等。 3. 在项目中创建一个Controller,用于处理微信小程序登录的逻辑。 4. 在Controller的方法中,先通过微信提供的API获取小程序的`code`,这里可以使用`https://api.weixin.qq.com/sns/jscode2session`接口。 5. 使用获取到的`code`,通过API发送请求获取小程序的`openid`和`session_key`。 6. 根据获取到的`openid`和`session_key`,可以生成一个用户标识符,例如使用`Guid`来生成一个唯一的`userid`。 7. 将生成的`userid`与用户的其他信息存储在数据库中,以便后续使用。 8. 在登录成功后,可以返回一个包含用户认证信息的`token`给小程序,以便后续的接口调用。 9. 在小程序中使用获取到的`token`来调用后端接口,实现身份验证和授权。 以上是简单的.NET Core 3.1实现微信小程序登录的步骤。根据实际需求和项目架构,可能需要进一步完善和优化。同时,由于微信的API接口可能会有更新和变化,建议在实际开发中参考微信官方文档的最新说明来完成相关的实现。 ### 回答3: 要实现微信小程序登录,可以借助.NET Core 3.1中提供的一些工具和库。具体步骤如下: 1. 创建微信小程序账号并获取必要的凭证 在微信公众平台上创建一个小程序账号,并获取小程序的AppID和AppSecret,这些凭证将用于后续的登录验证。 2. 使用开放平台管理工具安装SDK 在.NET Core项目中,使用NuGet包管理器或者dotnet CLI安装微信开放平台的SDK,例如`Senparc.Weixin.WxOpen`。这个SDK提供了许多与微信小程序相关的功能和接口。 3. 构建登录接口 创建一个处理小程序登录请求的接口,并在接口中使用微信提供的登录凭证校验接口(`https://api.weixin.qq.com/sns/jscode2session`)来验证用户的身份。在验证通过后,可以返回一个自定义的Token作为用户登录状态的凭证。 4. 配置小程序端的登录流程 在小程序端,可以使用`wx.login`获取到用户的登录凭证(code),然后将该凭证发送到后台的登录接口。接口验证通过后,将返回一个Token,小程序可以将该Token保存在本地,用于标识用户的登录状态。 5. 实现其他相关功能 通过微信小程序登录接口获取到用户的唯一标识(OpenID)、用户信息等,可以根据需要将这些信息保存到数据库或者进行其他操作,实现一些个性化的业务需求。 总之,要实现微信小程序登录,需要在后端使用.NET Core 3.1提供的工具和库与微信开放平台进行交互,验证用户身份,并返回一个Token用于标识用户登录状态。在小程序端,通过获取用户的登录凭证,发送给后台验证,然后将Token保存在本地,实现用户的登录功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值