用户及授权设置API

一、登录API——wx.login(object)

登录简单分为几个步骤:

1.小程序调用wx.login(object),获取登录凭证code值;
2. 小程序将用户登录凭证code 发往开发者服务器,换取唯一的标识和绘话密钥;
3.开发者服务器和微信服务器交互换取唯一标识和绘话密钥;
4.开发者服务器生成自己的sessionId;
5.小程序客户端保存sessionId;
6.wx.checkSession(object)检查登录状态是否过期;

在这里插入图片描述

步骤③详解:https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secrect=SECRECT&js_code=JSONCODE&grant_type=authorization_code
参数说明:
appid:小程序唯一标识;
secret:小程序的App secret;
js_code:wx.login()获取code;
gran_type:authorization_code,小程序授权类型;

1、《wx.login(object)参数说明》

字段是否必填数据类型含义
timeoutnumber超时时间
successfunction调用成功的回调函数
failfunction调用失败的回调函数
completefunction调用结束的回调函数(成功、失败都会执行)
//步骤1&2 app.js
App({
  onLaunch: function () {
    wx.login({
      success: (res) => {
        var code = res.code; // 用户登录凭证
        if(code){
          wx.request({
            url: 'url', // 开发者服务器地址
            data:{code:code},
          })
        } else {
          console.log("获取用户凭证失败"}
      },
    })
  }
});

4、sessionId用于开发者服务器和小程序之间做登录状态校验,为了保证安全性,sessionId应满足以下几点要求:

  • 长度足够长,建议2128种组合,即长度为168;
  • 规则可以自己确定,避免使用srand(当前时间),然后rand()的方法,建议采用操作系统提供的真正随机数机制,比如企业Linux下面读取/dev/urandom设备,或者拼写成字符串再MD5加密等多种方式。
  • 设置一定的有效时间,对于过期的sessionId视为不合法。sessionId保存到缓存Memcached、Redis或内存里面都可以。以sessionId为key,session-key+openId为value进行存储。
    5、小程序客户端没有类似于浏览器的cookie或者session机制,但是小程序可以利用其Storage机制来保存sessionId。在之后需要登录后才有权限访问的后台服务时,可以在请求中携带Storage中的sessionId,后台服务获取该sessionId后从缓存Redis或内存中查找校验该sessionId,如果有且正确的有效,继续执行后续代码,否则进行错误处理。
    6、《wx.checkSession(object)参数说明》
    字段 | 是否必填|数据类型 | 含义
    -------- | ----- | -----| -----
    success|否|function|调用成功的回调函数,登录状态未过期
    fail|否|function|调用失败的回调函数,已过期
    complete|否|function|调用结束的回调函数(成功、失败都会执行)

二、用户信息API——wx.getUserInfor(object)

只有在用户登录状态才能获取到用户的相关信息,在用户授权过的情况下,调用此接口将不再出现授权弹窗。

Page({
  onLoad:function () {
    // 必须在用户已经授权的情况下调用
    wx.getUserInfo({
      success:function (res) {
        var userInfo = res.userInfo;
      }
    })
  }
});

《wx.getUserInfor(object)参数说明》

字段是否必填数据类型含义
withCredentialboolean是否带上登录信息状态
langstring显示用户信息的语言,en,zh_CN,zh_TW(繁体中文)
successfunction调用成功的回调函数
failfunction调用失败的回调函数
completefunction调用结束的回调函数(成功、失败都会执行)

《上面success返回参数说明》

字段数据类型----
userInfoobjectnickName,country,province,city,language,avatarUrl(用户头像图片地址)、gender(性别,0位置,1男,2女)
rawDatastring不包括敏感信息的原始数据字符串,用于计算签名
signaturestring使用sha1(rawData+sessionkey)得到字符串,用于校验用户信息
encryptedDatastring包括敏感信息在内的完整用户信息的加密数据
ivstring加密算法的初始量
cloudIDstring敏感数据对应的云ID。开通云开发的小程序才会返回,可通过云调用直接获取开放数据。

三、授权API——wx.authorize(object object)

微信小程序部分API接口需要通过wx.authorize(object object)来向用户发起授权请求,调用后立即以弹窗的形式询问用户是否同意授权小程序使用某项功能或获取用户的某项数据,但不会实际调用应用接口,如果用户之前已经同意授权则不会出现弹窗,直接返回成功,开发者可以使用wx.getSetting获取用户当前的授权状态。
打开设置页面,用户可以在小程序设置页面“右上角”-“关于”-“右上角”-“设置”中控制对该小程序的授权状态。开发者可以调用wx.openSetting(object object),打开设置页面,引导用户开启授权。

Page({
  onLoad:function () {
    // 可以通过wx.getSetting先查询用户是否授权了scope.record
    wx.getSetting({
      success:function (res) {
        if (!res.authSetting['scope.record']) {
        // wx.authorize进行授权
          wx.authorize({
            scope: 'scope.record',
            success(){
              // 用户已同意使用录音功能,
              // 后续调用wx.startRecord()接口不会有弹窗询问
              wx.startRecord();
            }
          })
        }
      }
    })
  }
});

《scope授权列表》

含义scope.对应接口
用户信息userInfowx.getUserInfo
地理位置userLocationwx.getLocation、wx.closeLocation
通信地址addresswx.chooseAdress
发票抬头invoiceTitlewx.chooseInvoiceTitle
获取发票invoicewx.chooseInvoice
微信运动步数werunwx.getRunData
录音功能recordwx.startRecord
保存到相册功能writePhotosAlbumwx.saveImageToPhotosAlbum、wx.saveVideoToPhotosAlbum
摄像头cameracamera

四、设置API——wx.openSetting(object object)&wx.getSetting(object object)

微信小程序提供如下设置相关API接口:

1、wx.openSetting(object object)

调起客户端小程序设置页面,返回用户设置的操作结果。

设置页面只会出现小程序已经向用户请求过的权限。从开发者工具i3.0版本开始,用户发生点击行为后才可以跳转打开设置页,管理授权页面。

2、wx.getSetting(object object)

获取用户的当前设置。

返回之中只会出现小程序已经向用户请求过的权限。

// index.wxml
<!-- 方法一:使用button组件来使用此功能 -->
<button open-type="openSetting" bindopensetting="handler">
  点击获取授权并获取位置信息
</button>
<!-- 由点击行为触发wx.openSetting接口的调用 -->
<button bind:tap="settingBtn">
  打开设置页面
</button>
// index.js
Page({
  handler:function (e) {
    var that = this;
    if (!e.detail.authSetting['scope.userLocation']) {
      // 打开设置页面
    }
  },
  settingBtn:function () {
    wx.openSetting();
  }
});

返回授权结果AuthSetting对象,对象属性如下所示:

booleanscope.含义对应接口
userInfo是否授权用户信息wx.getUserInfo
userLocation是否授权地理位置wx.getLocation、wx.closeLocation
address是否授权通信地址wx.chooseAdress
invoiceTitle是否授权发票抬头wx.chooseInvoiceTitle
invoice是否授权获取发票wx.chooseInvoice
werun是否授权微信运动步数wx.getRunData
record是否授权录音功能wx.startRecord
writePhotosAlbum是否授权保存到相册功能wx.saveImageToPhotosAlbum、wx.saveVideoToPhotosAlbum
camera是否授权摄像头camera组件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MVC WebApi 用户权限验证及授权DEMO 前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个功能复杂的业务应用系统,通过角色授权来控制用户访问,本文通过Form认证,Mvc的Controller基类及Action的权限验证来实现Web系统登录,Mvc前端权限校验以及WebApi服务端的访问校验功能。 1 Web Form认证介绍 Web应用的访问方式因为是基于浏览器的Http地址请求,所以需要验证用户身份的合法性。目前常见的方式是Form认证,其处理逻辑描述如下: 1) 用户首先要在登录页面输入用户名和密码,然后登录系统,获取合法身份的票据,再执行后续业务处理操作; 2) 用户在没有登录的情况下提交Http页面访问请求,如果该页面不允许匿名访问,则直接跳转到登录页面; 3) 对于允许匿名访问的页面请求,系统不做权限验证,直接处理业务数据,并返回给前端; 4) 对于不同权限要求的页面Action操作,系统需要校验用户角色,计算权限列表,如果请求操作在权限列表中,则正常访问,如果不在权限列表中,则提示“未授权的访问操作”到异常处理页面。 2 WebApi 服务端Basic 方式验证 WebApi服务端接收访问请求,需要做安全验证处理,验证处理步骤如下: 1) 如果是合法的Http请求,在Http请求头中会有用户身份的票据信息,服务端会读取票据信息,并校验票据信息是否完整有效,如果满足校验要求,则进行业务数据的处理,并返回给请求发起方; 2) 如果没有票据信息,或者票据信息不是合法的,则返回“未授权的访问”异常消息给前端,由前端处理此异常。 3 登录及权限验证流程 1) 用户打开浏览器,并在地址栏中输入页面请求地址,提交; 2) 浏览器解析Http请求,发送到Web服务器;Web服务器验证用户请求,首先判断是否有登录的票据信息; 3) 用户没有登录票据信息,则跳转到登录页面; 4) 用户输入用户名和密码信息; 5) 浏览器提交登录表单数据给Web服务器; 6) Web服务需要验证用户名和密码是否匹配,发送api请求给api服务器; 7) api用户账户服务根据用户名,读取存储在数据库中的用户资料,判断密码是否匹配; 7.1)如果用户名和密码不匹配,则提示密码错误等信息,然该用户重新填写登录资料; 7.2)如果验证通过,则保存用户票据信息; 8) 接第3步,如果用户登录票据信息,则跳转到用户请求的页面; 9) 验证用户对当前要操作的页面或页面元素是否有权限操作,首先需要发起api服务请求,获取用户的权限数据; 10). api用户权限服务根据用户名,查找该用户的角色信息,并计算用户权限列表,封装为Json数据并返回; 11). 当用户有权限操作页面或页面元素时,跳转到页面,并由页面Controller提交业务数据处理请求到api服务器; 如果用户没有权限访问该页面或页面元素时,则显示“未授权的访问操作”,跳转到系统异常处理页面。 12). api业务服务处理业务逻辑,并将结果以Json 数据返回; 13). 返回渲染后的页面给浏览器前端,并呈现业务数据到页面; 14). 用户填写业务数据,或者查找业务数据; 15). 当填写或查找完业务数据后,用户提交表单数据; 16). 浏览器脚本提交get,post等请求给web服务器,由web服务器再次解析请求操作,重复步骤2的后续流程; 17). 当api服务器验证用户身份是,没有可信用户票据,系统提示“未授权的访问操作”,跳转到系统异常处理页面。
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值