用户在使用软件应用的过程中,第一步往往都是登录。输入账号密码,进行登录,登录的目的就是让应用识别张三是张三,而不是李四。相对应,如果能够不用输账号密码,应用就知道你是你,就叫做免登。

免登的源头还是需要登录的。业内企业内部登录往往采用统一登录中心SSO的方案,比如集成CAS。一个同一地址登录,同一域名下采用识别cookie的方式解析用户名。也就是,登录了OA之后,访问HR、邮箱等等,在关闭浏览器之前,不需要再次登录。钉应用实现免登,本质上也是通过钉钉实现登录。因为使用者已经输入账号密码或者手机号验证码在钉钉实现了登录,钉钉已经保存了用户的信息。

具体实践,实现钉应用免登可以分为下面几个步骤。

1、钉应用用户信息与钉钉通讯录打通。比如用户通过手机号实现关联。

2、前端代码,调用JSapi获取免登授权码。

3、后端代码,调用服务端接口解析授权码,实现登录。

4、后端代码,识别用户后,实现登录逻辑。

下面用后台java代码和前端vue代码来实际说明。

通讯录的同步忽略了,按照钉钉服务端接口能够实现同步。我们直接看前端的获取免登授权码该如何获取。

loginByCode(corpId) {

const _this= this;

console.log("requestAuthCode begin");

_this.dd.runtime.permission.requestAuthCode({

corpId: corpId,

onSuccess:function(result) {

console.log("requestAuthCode:" +result.code);

_this.httpUtils.appGet('/login/loginByCode?code=' + result.code).then(function(res) {

const user=res.data;

window.localStorage.setItem("user", JSON.stringify(user));

},function(r) {

_this.commonUtils.commonAlert(r.msg);

})

},

onFail:function(err) {

alert("客户端-获取免登授权码失败:" +JSON.stringify(err));

}

})

},

上面的代码块封装了loginByCode的方法,其主要功能就是获取授权码,然后将授权码传到后台,获取用户信息。关键的代码就是

dd.runtime.permission.requestAuthCode

这一个函数需要传入一个corpId作为参数,该参数在企业后台能够找到。获取授权码失败,我们可以把错误信息弹框显示出来。获取成功,就可以请求后台的接口拉取用户信息。接下来看看后台是如何实现的。

@GetMapping("loginByCode")

public UserVO list(@RequestParam String code) {

log.info(code);

UserInfoByCodeResponse response=userInfoByCodeRequest.get(code);returndingUserQueryService.getVOByUserId(response.getUserid());

}

上图后端代码展示了获取用户信息的顺序,即先解析授权码,得到用户信息,然后再去匹配用户信息,找到当前的用户。这里简化了登录的业务步骤,如果有集成鉴权,这一块是需要另写代码实现。接下来详细了解下userInfoByCodeRequest做了什么。

private String userInfoUrl = "https://oapi.dingtalk.com/user/getuserinfo?access_token={accessToken}&code={code}";

public UserInfoByCodeResponse get(String code) {

Map param =tokenService.getTokenMap();

param.put("code",code);returnrequestUtils.getWithUrlParam(userInfoUrl, UserInfoByCodeResponse.class, param);

}

如图所示,其实就是坐了个请求,请求URL关键标识为user/getuserinfo。钉钉会返回用户数据给你。钉钉返回的数据会包含userid这一数据,通过这一数据在应用从钉钉通讯录同步过来的数据中,即可定位到一位用户,这也就是下面这行代码做的事情。

dingUserQueryService.getVOByUserId(response.getUserid()

注意这行代码是完全在应用内实现的,比如笔者这里就是去数据库根据userid查找用户,返回用户信息。至此,微应用免登就实现完毕,是不是很简单呢。觉得简单就点个赞留个言吧,有问题欢迎联系笔者共同探讨。

php钉钉企业微应用免登demo,钉钉微应用免登实现相关推荐

  1. 钉钉通知-调用钉钉发送企业内部消息开发

    首先,我们要明确需求:自己的系统需要发送通知消息到用户,接收消息用户为同一企业内的人员,选用短信可能涉及到费用问题,故可以选用钉钉或者企业微信,在此我使用钉钉进行发送消息. 调用钉钉发送企业内部消息: ...

  2. Prometheus监控(三)—— 钉钉和企业微信告警

    一.prometheus 实现钉钉和企业微信告警 基础流程 1.1 钉钉通知 altermanager基础设置可以参照: https://editor.csdn.net/md/?articleId=1 ...

  3. 企业IM,阿里钉钉“恶”企业微信“善”?

    (图片来源于网络) 文 | 易不二 编辑排版| 黄娇 来源 | 螳螂财经(ID:TanglangFin) 用过钉钉的人应该都不会对几个场景感到陌生. 有时候下班了,老板或同事发来一条消息,但自己正在忙 ...

  4. JeecgBoot低代码平台 2.4.5 版本发布,钉钉与企业微信集成版本

    项目介绍 JeecgBoot是一款基于代码生成器的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shi ...

  5. 钉钉扫码登录第三方_e签宝联合钉钉升级产品功能,共建企业服务生态闭环

    钉钉微应用更新了,e签宝助力升级.互联网时代下,传统模式的"稳定"已然成为历史,客户的需求在不断变化,我们创新的脚步也从未停止. e签宝携手钉钉,双方着力共建开放.共生.多赢的企业 ...

  6. 钉钉、企业微信、飞书的掘金逻辑

    互联网进程已经从上半场的消费互联网,转为下半场的产业互联网.TO B,成为互联网巨头挖掘产业增量的另一赛道. 各家企业进入赛道的方式都不同.目前,钉钉.企业微信.飞书三家远程办公平台,成为阿里.腾讯. ...

  7. NC移动报表H5应用介绍-可以集成钉钉或者企业微信

    移动报表H5应用介绍 目录 移动报表H5应用介绍... 1 1产品介绍... 2 1.1前言... 2 1.1.1简介... 2 1.1.2产品特色:... 2 1.2移动报表APP介绍... 2 1 ...

  8. 华为出手了!19万人在用的“办公神器”正式发布,钉钉、企业微信遇上对手了?...

    点击上方蓝字,关注肉眼品世界~ 深度价值体系传递 导读:近年来,互联网巨头纷纷布局智能办公领域,从阿里的办公软件钉钉,到腾讯的视频会议产品,再到华为的华为云WeLink. 移动智能办公成为了云计算江湖 ...

  9. NC移动报表H5应用介绍可以集成钉钉和企业微信

    移动报表H5应用介绍 目录 移动报表H5应用介绍 1 1产品介绍 2 1.1前言 2 1.1.1简介 2 1.1.2产品特色: 2 1.2移动报表APP介绍 2 1.2.1产品适用NC版本 2 2安装 ...

  10. 阿里钉钉和企业微信怎样为企业社交服务?

    在企业社交领域里,阿里钉钉和企业微信这两大巨头,正在各自轨道上加速突进,以不同的模式在企业级服务市场引发深刻变化.钉钉和企业微信是目前市面上使用用户量较多的两款产品,两者在办公管理方面的基本功能特点都 ...

最新文章

  1. asp.net跳转并接收参数
  2. MoSCow和Kano
  3. Android 5.0+高级动画开发 矢量图动画 轨迹动画 路径变换
  4. php无法下单功能,PHP如何解决并发下单问题?(不一定是下单,举个例)
  5. 一个小厂前端 Leader 如何筛选候选人?
  6. C# RichTextBox 实现循环查找关键字
  7. shell基础--字符串和变量的操作
  8. 性能优化篇 之 如何开展优化类的工作(2)
  9. NoSQL数据库介绍
  10. 山东大学软件学院2022数据化企业期末复习总结
  11. 前端使用阿里云图标库
  12. 五年产品经理的转正述职报告(附PPT下载)
  13. Frame-Relay基础及配置学习笔记
  14. 2019毕业设计总结——基于稀疏表示的人脸图像超分辨率重构
  15. uclinux编译 心得一
  16. 死亡计算机在线使用,抖音死亡计算器珍惜时间测试入口 抖音珍惜时间死亡计算器在线测试...
  17. 如何充分利用Composition API对Vue3项目进行代码抽离
  18. firefly 3399 开发板笔记
  19. 2019年9月全国计算机公共基础题库【速刷版】
  20. 计算机应用基础实验报告心得体会,计算机应用基础实训总结报告

热门文章

  1. Deepfacelab实现视频换脸——使用体验
  2. linux修改宽带拨号密码,linux配置上网 linux adsl拨号上网设置
  3. XMind使用技巧1
  4. 2021-03-19腾飞XXEachXX-00.00-N.009
  5. Android数据库Realm学习(一)基本使用
  6. C++ 使用 openGL 实现吃豆人游戏
  7. 操作系统面经大全——双非上岸阿里巴巴系列
  8. vue 直接访问静态图片_vue中显示静态图片怎么引用
  9. SQL Server 存储过程
  10. android 仿京东抢购上下轮播消息