zoukankan      html  css  js  c++  java
  • 教你如何实现微信小程序与.net core应用服务端的无状态身份验证

    • 随着.net core2的发布,越来越多人使用.net core2开发各种应用服务端,下面我就结合自己最近开发的一款小程序,给大家分享下,怎么使用小程序登录后,小程序与服务端交互的权限控制。

    .net core 服务端的登录设计如下:

    • net core 服务端,我们使用 JWT 搭建分布式无状态身份验证系统

      1.首先在startup.cs中 ConfigureServices(IServiceCollection services) 中添加如下代码

    教你如何实现微信小程序与.net core应用服务端的无状态身份验证

    教你如何实现微信小程序与.net core应用服务端的无状态身份验证

    上述代码中有一个 自定的 WabApiAuthroizeAttribute,具体实现代码如下:

    教你如何实现微信小程序与.net core应用服务端的无状态身份验证

    2.在 Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)中添加

    教你如何实现微信小程序与.net core应用服务端的无状态身份验证

    3.我们要创建三个关于JWT的类

    教你如何实现微信小程序与.net core应用服务端的无状态身份验证

    TokenEntity实体类,用来生成token实体,里面大家可在添加属性

    教你如何实现微信小程序与.net core应用服务端的无状态身份验证

    token提供属性

    教你如何实现微信小程序与.net core应用服务端的无状态身份验证

    教你如何实现微信小程序与.net core应用服务端的无状态身份验证

    教你如何实现微信小程序与.net core应用服务端的无状态身份验证

    教你如何实现微信小程序与.net core应用服务端的无状态身份验证

    里面有一些登录相关代码,大家可结合自己的程序进行修改

    这样我们就完成了 JWT的三个相关类的设计。

    • 以下就是我们的具体登录验证:

      添加一个登录webapi

    • 教你如何实现微信小程序与.net core应用服务端的无状态身份验证

      登录后返回一个 token实例,里面将包含我们之前创建的各个属性,重点是access_token

    返回的access_token,将在微信小程序中提交时附上,就可实现无状态身份验证。

    那个其他webapi如何判断身份验证呢?很简单,只要在每个webapi的类或属性上添加此属性即可,超级简单吧。

    [WebApiAuthorize]

    比如我们有一个获取小程序首页滚动图片链接的action:

    教你如何实现微信小程序与.net core应用服务端的无状态身份验证

    如此这般即可

    下面我们将讲讲,小程序如何登录,如何身份认证

    首先小程序端的登录设计如下:

    教你如何实现微信小程序与.net core应用服务端的无状态身份验证

    小程序登录界面

    上面我们暂且不讲,使用微信登录的事,只讲小程序如何使用我们应用的账号密码进行登录:

    • 小程序登录代码如下:

    在小程序中,我们首先对小程序的网络请求wx.request进行封装

    教你如何实现微信小程序与.net core应用服务端的无状态身份验证

    教你如何实现微信小程序与.net core应用服务端的无状态身份验证

    那使用此类进行登录后,我们可以获得返回的access_token,并将access_token保存起来,下次,请求其他动作时,将会自动在网络头header 附上token,就可使用身份验证,非常简单。

    以上就是我所做的一个实例,因为代码较多,有时没有写的很具体,如果大家还疑问,可以直接咨询我。

    原文转自:http://www.toutiao.com/i6480281834511925774/,转载请注明出处。

    更多精彩文章请关注我们的微信公众号FocusDotCore

  • 相关阅读:
    多数据源报表解析之简单多源报表
    8.5.4 Optimizing InnoDB Redo Logging 优化InnoDB Redo Logging
    8.5.2 Optimizing InnoDB Transaction Management
    8.5.1 Optimizing Storage Layout for InnoDB Tables
    Linux_RHEL7_YUM
    Linux_RHEL7_YUM
    Python基本语法_函数_返回值
    Python基本语法_函数_返回值
    8.4 Optimizing Database Structure 优化数据库结构
    8.3.7 InnoDB and MyISAM Index Statistics Collection InnoDB 和MyISAM 索引统计信息收集
  • 原文地址:https://www.cnblogs.com/tianfengcc/p/7723593.html
Copyright © 2011-2022 走看看