Asp.Net Core 企业微信静默授权的实现_实用技巧

来源:脚本之家  责任编辑:小易  

  昨日清晨,微软在 Red Hat DevNation 大会上正式发布了 .NET Core 以及 ASP.NET Core 1.0,并提供了下载,其不仅能在 Windows 操作系统上运行,还能在 Linux 和 Mac OS X 操作系统上运行,这意味着开发者不仅能使用它来建立自己的应用,还能修改和完善平台,来迎合自己和他人的需求。   2014 年,微软首次发行 .NET Core 以及其源代码,但是微软之前的版本只能用于测试。今天是微软第一次官方支持使用 Linux 和 OS X(Windows 的两大竞争对手)的现实操作平台。Linux 主要供应商之一 Red Hat 也宣布:其将在 Red Hat Enterprise Linux 操作系统上官方支持 .NET。   这些都意味着微软内部发生了重大的改变,同时整个软件行业也发生了改变。在过去的 10 年中,从谷歌到,再到 Twitter,全球商业科技公司越来越多地使用 Linux 和其他的开源软件,来建立它们的网上服务和其他的科技。因此,IT 供应商也越来越接近开源状态,而微软就是主要供应商之一。为了完成目标,微软必须确保 .NET 处于开源状态,同时其他重要的微软 IT 工具可以在所有的操作系统上运行,这就包括 Linux。   微软在 .NET 上大做文章时,它同时还发行了能够运行 Linux 的 SQL 服务器数据库软件。数据库本身并不开源,但是这是微软第一次为 Linux 提供产品。先前,微软只支持在自家的操作系统上运行软件。这说明,世界在改变,微软也随之在改变。   微软开放部分 .NET 环境已有数年了。2009 年,其开始了首个程序框架,名为 ASP.NET MVC。微软也帮助几个重要的开源软件(包括数据处理平台 Hadoop 以及代码工具 Node.js)移植到 Windows 平台。但是即使是其在宣布在 Azure 云端服务器上支持 Linux 之后,微软仍然没有为 Linux 操作系统书写过多的软件。微软能帮你做的,就是运行 Linux 系统,但是要使用 Linux 平台的软件,就得靠自己了。   2014 年,这种状况开始改变:微软宣布不仅对 .NET 中心开源,还会将之移植到 Linux 和 OS X 上。然后在今年年初,微软收购了一家叫做Xamarin 的公司,后者长期帮助开发者使用 .NET 技术来为更加广泛的平台(包括 Linux 以及 Android、iOS 等操作系统)建立软件。   微软的动机   微软此次支持 Linux 并开源软件的动机并不是毫无私心的。其实,这对于微软的生存至关重要。在过去的几年中,Linux 在网络服务器市场上挤掉了 Windows 服务器,开发者蜂拥而至去开源程序语言,以及如 Ruby on Rails、Python 和谷歌的 Go language 等框架来建立下一代应用。微软开发者部门副主席 Julia Liuson 表示:她的团队害怕微软在将来会威风不再。如果你问开发者,他们会对 Visual Studio 给予高度评价,但是我们必须与时俱进,才能在风起云涌的市场中立于不败之地。   而要赢得竞争的方式是显而易见的:开源。因此,Liuson 和她的同事们现在正在努力让 .NET 变得更加开放,让它不仅能够在 Windows 平台上运行,还能在任何开发者想要使用的平台上运行。   Liuson 表示她们并不担心开源 .NET 将会减少 Windows 通行证的销售量,因为开发者并不会一开始就考虑使用 Windows。但是现在,他们也许将会考虑微软Visual Studio 和 Xamarin 产品,或者使用 Azure 云端服务,来取代亚马逊和谷歌的服务。   据悉,来自 1300 家企业的超过 18000 名开发人员参与了 .NET Core 1.0 的贡献工作,微软方面表示,其同时指出这一新版本还包含 .NET 标准库,旨在帮助开发人员更轻松地 复用其编写的运行在服务器、云端、桌面乃至包括 Windows、iOS 与 Android 在内的各类设备上的应用程序时,所使用的代码与技能。   Illyriad Games 负责人James Niesewand 表示微软的此次开源将会方便他们直接修复问题,这样一来,他们再也不用花很长世间等待微软来修复,也不用在出问题时从头开始写程序。   他表示:三年前,如果我们发现了 .NET 问题,我们会撰写一份问题报告,然后呈递给微软。几周后,我们会收到回复表示微软已承认此问题;但是也许是在一年之后,微软才会真正修复此问题。而现在,我们可以直接自己修复问题,然后由微软批准,这个过程只需数小时,大大节省了时间。   微软从此次开源中获益颇多。微软在其自己的云端服务器中使用 .NET,因此,从理论上讲,从 Illyriad 和其他开发者平台上做出的完善,到头来也会促进微软的发展。这和 Facebook 和谷歌开发和发展软件的方式如出一辙。如果一个非 Facebook 开发者发现了如何加快 Facebook 开发框架反应的方法,那么应用将变得更加快捷灵敏,任何人(包括 Facebook 用户)都将从中获益。如果一位研究 AI 的学者发现了促进谷歌 AI 框架TensorFlow 发展的方法,那么研究者将获得更好的工具,谷歌也将会在 AI 方面更进一步。   而现在,微软也加入到了这种发展方式中来。至于其之后的发展,我们拭目以待www.zgxue.com防采集请勿采集本网。

企业微信接口文档

他的网站是 http://www.ajaxpro.info/ 这是一个个人作品 ,很好用。 本来新的asp.net 里自 帮助你方便的处理数据。并且还有默认的还可以的控件外观,这点对于做企业管理类软件

1. 构造授权网页链接

Windows Server 2003 企业版 Windows Server 2003 企业版是为满足各种规模的企业的 Web 服务和应用程序的平台,这些服务和应用程序使用 ASP.NET 技术,该技术是 .NET 框

2.回调获取到 Code 通过code+access_token去 请求用户信息

与Microsoft和Intel一起使用Microsoft SQL Server 2005企业版(64位)和Quad-Core Intel X 实际上Windows大多数程序第一次启动都会很慢,包括ASP.Net页面也是一样,但是过了第

3. 获取access_token

Windows存储和文件系统,Microsoft Graphics组件,Windows内核模式驱动程序,ASP的安全更新。 NET,Microsoft PowerShell和.NET Framework。Windows 10是美国微软公司研

调试准备工作 -->内网穿透+域名 推荐向日葵有免费的,免费的开发测试够用了

最终导致企业局域网瘫痪,无法正常使用,它能感染系统中exe,com,pif,src,html,asp等文件 wscsvc KPfwSvc SNDSrvc ccProxy ccEvtMgr ccSetMgr SPBBCSvc Symantec Core LC

域名的配置成可信用

去下一个http://www.yzcn.net/download/softinfo.asp?prod_id=prod20115109393164707 我们可以尝试清洁DVD光驱,以便其更好地读盘,或者更换光驱、光盘。对于企业用户,客

上代码 Demo下载

项目助理; 企业软件:实施工程师 、售前工程师 、售后工程师、 BI工程师企业软件其它 并且成为互动界面不可或缺的一部分。 常用软件工具:AfterEffects、Core Composer、

[ApiController] [Route("api/[controller]")] public class Auth2Controller : ControllerBase { private readonly string _agentId = "1000002"; private readonly string _secret = "Y3f8ESBIBJoC8M_FPHOlpvmghS_Nn2ceFePRVZjw9_E"; private readonly string _corpId = "wwbf72a7a059eac0f8"; /// <summary> /// 授权地址 /// </summary> private readonly string _auth2url = "https://open.weixin.qq.com/connect/oauth2/authorize"; /// <summary> /// 授权回调地址 /// </summary> private readonly string _callbackurl = "http://******.zicp.vip/auth2callback/api/Auth2/Callback"; /// <summary> /// 获取access_token地址 /// </summary> private readonly string _gettokenurl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"; /// <summary> /// 获取访问用户身份地址 /// </summary> private readonly string _getuserurl = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo"; private readonly ILogger<Auth2Controller> _logger; private readonly IHttpClientFactory _clientFactory; private readonly IMemoryCache _memoryCache; public Auth2Controller(ILogger<Auth2Controller> logger, IHttpClientFactory clientFactory, IMemoryCache memoryCache) { _logger = logger; _clientFactory = clientFactory; _memoryCache = memoryCache; } [HttpGet] public IActionResult Auth2(string redirecturi) { string strurl = $"{_auth2url}?" + $"&appid={_corpId}" + $"&redirect_uri={System.Web.HttpUtility.UrlEncode(_callbackurl)}" + $"&response_type=code" + $"&scope={_secret}" + $"&agentid={_agentId}" + $"&state={System.Web.HttpUtility.UrlEncode(redirecturi)}#wechat_redirect"; return Redirect(strurl); } [HttpGet("Callback")] public async Task<IActionResult> Callback(string code, string state) { /** 1)code只能消费一次,不能重复消费。比如说,是否存在多个服务器同时消费同一code情况。 2)code需要在有效期间消费(5分钟),过期会自动失效。 */ string access_token = await GetAccessToken(); string url = $"{_getuserurl}?access_token={access_token}&code=[code]"; HttpResponseMessage response = await _clientFactory.CreateClient().GetAsync(url); if (response.StatusCode == System.Net.HttpStatusCode.OK) { using (var responseStream = await response.Content.ReadAsStreamAsync()) { var userinfo = JsonConvert.DeserializeObject<dynamic>(new StreamReader(responseStream).ReadToEnd()); int errcode = userinfo.errcode; if (errcode == 0) { //企业成员 string UserId = userinfo.UserId; //外部成员 string OpenId = userinfo.OpenId; /** userid是系统生成的可以修改一次; 所以后面的业务逻辑如果遇到错误就要重新授权一下; */ if (UserId==null) { _memoryCache.Set<string>("UserId", OpenId); } else { _memoryCache.Set<string>("UserId", UserId); } } else { _logger.LogError($"getuserinfo请求错误:{userinfo.errmsg}"); return Ok(); } } } return Redirect($"{System.Web.HttpUtility.UrlDecode(state)}?UserId={_memoryCache.Get<string>("UserId")}"); } public async Task<string> GetAccessToken() { if (_memoryCache.Get<string>("AccessToken") == null) { string url = $"{_gettokenurl}?corpid={_corpId}&corpsecret={_secret}"; HttpResponseMessage response = await _clientFactory.CreateClient().GetAsync(url); if (response.StatusCode == System.Net.HttpStatusCode.OK) { using (var responseStream = await response.Content.ReadAsStreamAsync()) { var access_token_result = JsonConvert.DeserializeObject<dynamic>(new StreamReader(responseStream).ReadToEnd()); int errcode = access_token_result.errcode; if (errcode == 0) { string access_token = access_token_result.access_token; int expires_in = access_token_result.expires_in; _memoryCache.Set<string>("AccessToken", access_token, DateTimeOffset.Now.AddSeconds(expires_in - 10)); } else { _logger.LogError($"access_token请求错误:{access_token_result.errmsg }"); } } } } return _memoryCache.Get<string>("AccessToken"); } }

到此这篇关于Asp.Net Core 企业微信静默授权的实现的文章就介绍到这了,更多相关Asp.Net Core 静默授权内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网! 您可能感兴趣的文章:ASP.NET Core学习之使用JWT认证授权详解浅谈ASP.NET Core 中jwt授权认证的流程原理asp.net core 授权详解asp.net core2.2多用户验证与授权示例详解

第一学期序号   课程名称   课程代号   学时数1   计算机基础 CTB 202   软件技术基础  STB 123   程序逻辑及C语言编程 Logic C    644   Photoshop基础 Photoshop-Base    205   基于HTML商业站点开发    HTML   366   SQL Server数据库基础 SQL-Base   287   C#/Winform编程   C#/WinForm 368   项目实战   PRJ 689   职业素质训练  COT-1  18合计   302第二学期序号   课程名称   课程代号   学时数1   SQL Server数据库设计和高级查询 SQL-Adv    402   。NET平台及C#高级编程   .NET/C#-Adv   643   Photoshop高级 Photoshop-Adv 244   Java编程  Java   485   Javascript及网页布局 Javascript 406   JavaWeb应用开发  JavaWeb    447   项目实战   PRJ 808   软件文档写作(一)   SDD-1  129   职业素质(二)    COT-2  20合计   372第二学年JAVA方向序号   课程名称   课程代号   学时数1   Oracle数据库应用与开发  Oracle 442   数据结构及Java实现  Data-Struct   283   JavaWeb高级应用与开发   JavaWeb-Adv   364   Linux平台及应用  Linux  205   基于SSH框架的J2EE企业级应用开发 J2EE-SSH   686   UML与Java设计模式   UML/DP 367   J2EE前沿技术  J2EE-NTC   168   项目实战(三)    PRJ-3  1209   软件文档写作  SDD-2  1610  职业素质训练  COT-3  24合计   408第二学年.NET方向序号   课程名称   课程代号   学时数1   Oracle数据库应用与开发  Oracle 442   数据结构及C#实现 Data-Struct   283   ASP.NET企业级应用核心技术   ASP.NET-Core  444   .NET三层结构  .NET-Three-Tier   365   ASP.NET企业级应用高级编程   ASP.NET-ADV   366   UML与设计模式 UML/DP 367   ASP.NET前沿技术  ASP.NET-NTC   168   项目实战(三)    PRJ-3  1289   软件文档写作(二)   SDD-2  1610  职业素质训练(三)   COT-3  24合计   408内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • asp.net的htmlform控件学习及post与get的区别概述
  • asp.net 获取客户端浏览器访问的ip地址的实例代码
  • .net读取excel 返回datatable实例代码
  • .net 下运用策略模式(组合行为和实体的一种模式)
  • visual studio 2017 community安装配置方法图文教程
  • .net core webapi中如何实现多态数据绑定实例代码
  • asp.net保存远程图片的代码
  • 基于asp.net mvc 应用程序的生命周期(详解)
  • .net c#创建webservice服务简单实例
  • asp.net处理xml数据实例浅析
  • 广东硅谷软件学院有哪些专业课程,每项大约需要多少学费?
  • 微软说它深爱着Linux,现在它用行动证明了
  • 谁能帮我把这几段话翻译成英文?谢谢啦。。在线等
  • Microsoft Silverlight是什么程序?
  • 实例详解angularjs和ajax的结合使用
  • 求windows都包含什么?越细致越好!
  • SQLServer与MySQL数据库对比
  • win10 version 1703 与之前的区别是什么?
  • 熊猫烧香病毒是什么
  • 怎样重装电脑的系统?安装windows7
  • IT行业需要学什么为主,本人很喜欢这
  • 应用程序“Default Web Site”中的服务器错误
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全基础应用实用技巧自学过程首页asp.net实用技巧asp.net core学习之使用jwt认证授权详解浅谈asp.net core 中jwt授权认证的流程原理asp.net core 授权详解asp.net core2.2多用户验证与授权示例详解asp.net的htmlform控件学习及post与get的区别概述asp.net 获取客户端浏览器访问的ip地址的实例代码.net读取excel 返回datatable实例代码.net 下运用策略模式(组合行为和实体的一种模式)visual studio 2017 community安装配置方法图文教程.net core webapi中如何实现多态数据绑定实例代码asp.net保存远程图片的代码基于asp.net mvc 应用程序的生命周期(详解).net c#创建webservice服务简单实例asp.net处理xml数据实例浅析未将对象引用设置到对象的实例 (java正则表达式 pattern和matcheasp.net(c#)网页跳转七种方法小结未能加载文件或程序集“xxx”或它asp.net“服务器应用程序不可用”asp.net中的几种弹出框提示基本实asp.net gridview 72般绝技asp.net生成excel并导出下载五种asp.net对路径"xxxxx"asp.net汉字转拼音和获取汉字首字dz asp.net论坛中函数--根据url获得源文件c#.net 动态读取 走马灯代码实例分享.net中获取程序根目录的常用方法介绍asp.net数据绑定之gridview控件asp.net mvc @helper辅助方法和@functonsweb页面多语言支持解决方案.net输出重写压缩页面文件的小例子在.net中扫描局域网服务的实现方法asp.net导出excel乱码的原因及解决方法lucene.net实现搜索结果分类统计功能(中小
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved