前言

小程序开发的 前置条件 1 需要服务端是https 和域名 Ip 是不可以的
2 需要申请appid
小程序的官方流程图

个人理解

对于上面的流程图 步骤一 客户端 小程序调用wx.login 方法 获取用户的code 这个code 是限时的五分钟就会过期 拿到code 就可以向服务端发起登录请求了 步骤二 服务端 : 服务端验证完一些信息后 1 appId, 2 appsecret 3 code 三个参数向微信Api 接口发起请求 会返回 session_key 和 openid openid 是唯一标识 然后生成token 返回给前端 前端就可以通过token 请求服务端资源服务器

ABP Vnext 授权中心新增小程序登录

1 首先在Domain 中 找到 IdentityServer 文件夹 新增一下await CreateClientAsync(name: "wechat",scopes: new[] {"IdentityService", "InternalGateway", "WebAppGateway", "BusinessService","WeChat"},secret: (configurationSection["ShCloudMgt_App:ClientSecret"] ?? "1q2w3e*").Sha256(),grantTypes: new[] { "WeChat" },//redirectUri: $"http://localhost:44307/authentication/login-callback",requireClientSecret: false);2 找到 WebHost 或者是 分离出来的 IdentityServerHost创建一个类 继承IExtensionGrantValidatorWeChatGrantValidator : IExtensionGrantValidatorpublic class WeChatGrantValidator : IExtensionGrantValidator
{public string GrantType => ExtensionGrantTypes.WeChatQrCodeGrantType;private readonly DateTime DateTime1970 = new DateTime(1970, 1, 1).ToLocalTime();private readonly UserManager<Volo.Abp.Identity.IdentityUser> _userManager;private readonly IJsonSerializer _jsonSerializer;public WeChatGrantValidator (
UserManager<Volo.Abp.Identity.IdentityUser> userLoginManager,
IJsonSerializer jsonSerializer){_userManager = userLoginManager;_jsonSerializer = jsonSerializer;}public async Task ValidateAsync(ExtensionGrantValidationContext context){string code = context.Request.Raw.Get("Code");if (string.IsNullOrEmpty(code)){context.Result = new GrantValidationResult(IdentityServer4.Models.TokenRequestErrors.InvalidGrant);}// 后面就是自己的逻辑 openiD context.Result=ServerValidate(openId)}/// <summary>/// 服务器端验证并输出用户信息,后续自动生成token/// </summary>/// <param name="loginProvider"></param>/// <param name="providerKey"></param>/// <returns></returns>private async Task<GrantValidationResult> ServerValidate(string openId){Stopwatch sw = new Stopwatch();sw.Start();var user = await _userManager.FindByIdAsync(openId); //业务库用户if (user == null)return new GrantValidationResult(IdentityServer4.Models.TokenRequestErrors.InvalidGrant);var principal = new ClaimsPrincipal();List<ClaimsIdentity> claimsIdentity = new List<ClaimsIdentity>();ClaimsIdentity identity = new ClaimsIdentity();identity.AddClaim(new Claim("sub", user.Id.ToString()));identity.AddClaim(new Claim("tenantid", user.TenantId.ToString())); //租户Ididentity.AddClaim(new Claim("idp", "local"));identity.AddClaim(new Claim("amr", loginProvider));long authTime = (long)(DateTime.Now.ToLocalTime() - DateTime1970).TotalSeconds;identity.AddClaim(new Claim("auth_time", authTime.ToString()));claimsIdentity.Add(identity);principal.AddIdentities(claimsIdentity);sw.Stop();Console.WriteLine($"程序耗时:{sw.ElapsedMilliseconds}ms.");return new GrantValidationResult(principal);}
}

ABP Vnext 学习03-授权中心微信小程序登录相关推荐

  1. 微信小程序授权_微信小程序授权验证码什么意思

    首先,最先要进行的便是运行微信软件,然后在软件的主界面中,找到"发现"这一功能项目.1.点击"发现"界面之后,会看到一个"游戏中心"的选项, ...

  2. uni-app微信小程序登录授权

    uni-app微信小程序登录授权 首先是需要用到一个授权按钮来触发获取用户信息授权: 关键在于 open-type 为 getUserInfo , 然后有个@getuserinfo的事件,把获取授权接 ...

  3. android微信登录获取微信账号,微信小程序--登录授权,一键获取用户微信手机号并登录...

    一.前言 微信小程序登录流程时序 说明: 小程序调用wx.login() 获取 临时登录凭证code ,并回传到开发者服务器 开发者服务器以code换取 用户唯一标识openid 和 会话密钥sess ...

  4. 微信小程序登录授权与授权手机号

    文章目录 前言 微信小程序登录授权与授权手机号 一.登录授权 1. 发送 res.code 到后台换取 openId, sessionKey 二.授权手机号 官方规定 因为需要用户主动触发才能发起获取 ...

  5. RuoYi-Vue微信小程序登录授权

    目前的框架中token是使用jwt生成,存储到redis控制token时效,而认证是使用UsernamePasswordAuthenticationToken实现的 微信小程序登录授权 需求分析 解决 ...

  6. UNIAPP---实现微信小程序登录授权和手机号授权(uniapp做微信小程序)

    UNIAPP-实现微信小程序登录授权和手机号授权(uniapp做微信小程序) 描述:uniapp开发小程序,先授权用户信息后再出现手机号授权的页面进行手机号授权.完成后返回上一页面并把信息存入后台以及 ...

  7. 微信小程序登录-手机号授权并获取手机号

    做微信小程序时,记录实现微信小程序登录 这里已经获取用户openId和sessionKey 1.通过按钮触发手机号授权 必须要通过按钮触发授权,open-type='getPhoneNumber'不能 ...

  8. Abp 微信小程序登录 基本的流程和实践

    需求:有个web端,然后移动端使用微信小程序.要把微信用户和系统中的用户对应起来 上一篇搞了个钉钉小程序登录:钉钉小程序登录 微信小程序登录,方便用户输入和系统中校验的也就只有手机号了,既能保证用户唯 ...

  9. 微信小程序登录方法,授权登录及获取微信用户手机号

    ✅作者简介: 大家好五一快乐,我是痴心阿文,你们的学友哥,今天给大家分享微信小程序登录方法!

最新文章

  1. php怎么批量转码,网站文件批量转码_PHP教程
  2. vim tab设置为4个空格
  3. 互联网人不敢生孩子:加班多、想跳槽、怕被边缘化
  4. 用ASP实现在线压缩与解压缩
  5. s5pv210 linux内核移植,简单根文件系统制作 - S5PV210 Linux3.8.3内核移植_Linux编程_Linux公社-Linux系统门户网站...
  6. U-Boot启动过程--详细版的完全分析
  7. 本机显示服务器文本信息,打开文档显示云服务器
  8. 【转】ubuntu 12.04 LTS将关闭最大化最小化移动到右上角
  9. android蓝牙聊天设备,Android蓝牙开发——实现蓝牙聊天
  10. mysql创建表空间和用户
  11. JavaSE基础——Object类中的常用方法
  12. 20行Python代码爬取王者荣耀全皮肤
  13. 漏扫工具:Docker一键安装AWVS和Nessus
  14. SolidWorks.2020.SP5.0软件下载
  15. (图文详细)设置文件夹中的文件显示文件后缀名的方法
  16. 浙大 计算机 设计学 考研科目,2020浙江大学软件工程考研参考书目
  17. qemu内存模型(2) 实现说明
  18. python画双折线图-python双折线图
  19. CSDN插件还能画图、加速GitHub下载?分享几个插件给你
  20. RocketMQ面面观

热门文章

  1. 记录一下Ubuntu下安装Docker遇到的坑
  2. 【N32G457】基于RT-Thread和N32G457的可控电流源
  3. Python 采集87个手绘风格PPT模板
  4. 路由器老掉线的原因之一
  5. ppt模板页面过渡动画效果怎么制作?
  6. 视频压缩软件,视频压缩软件哪个最好用?
  7. deepin连接投影仪显示不完全
  8. 心跳太快对身体带来影响?4种方法来减速!
  9. 湖南计算机应用技术专科学校排名,湖南所有职业技术学院排名
  10. 学习C++复合数据类型