钉钉免登+消息通知业务逻辑记录

企业 OA绑定阿里钉钉

需求:

  1. 从钉钉进入OA,要实现免登,
  2. 在OA系统内部的审批消息,要及时发送到对应的钉钉用户(工作消息通知)

 

大概流程:

1、应用定义为:企业内部开发——微应用

2、创建微应用:在钉钉后台管理中创建微应用,获取开发微应用和必要参数。

 CORP_ID :企业id,

CORP_SECRET:企业秘钥,

agentid:应用标识id 

3、确定OA的开发语言和方式。本次OA的服务端采用spring boot,前端是vue+jquery

4、服务端引入钉钉的SDK,前端引入钉钉的js文件(开发文档上都有包)

 

钉钉业务逻辑:

钉钉免登din业务逻辑:

 

根据微应用的参数获取access_token,

根据accesss_token可以获取到在顶顶应用内的userid,

根据access_token+userid,获取jsapi_ticket,在用随机数nonceStr+时间timeStam+jsapi_ticket计算出签名信息sign

将jsapiticke,sign ,nonceSt,timeStamp,CORP_ID,agentid,六个参数,通过接口从后端发送给前端,由前端进行鉴权。

鉴权通过后,前端可以拿到code免登授权码,通过ajax传给后端

后端通过钉钉接口+ccess_token+code,可以获取到用户的userid,

后端通过钉钉接口+ccess_token+code+userid,获取到用户详情,最重要的就是mobile和userid,这两个值必须通过接口传给前端,其他参数可以不要。

在OA系统数据库用户表新增DING_USERID字段

前端把mobile和userid通过ajax请求发送给后端接口,接口通过mobile去查询OA系统的数据库用户表,若mobile存在,则将userid插入用户表此条用户信息中,同时返回此用户的“用户名”和“密码”。

前端将“用户名”和“密码”通过ajax,传给login接口,login接口判断用户信息是否准确。

 

PS:这里有个问题就是,在用户注册时,密码存入数据库前已经经过simpleHash加密算法,因此前面后端返回的“密码”已经是加密密码了,如果直接登录肯定是错误的。

simpleHash方法是一种单向散列算法,里面用了MD5,就意味着从明文可以得到散列值,而散列值不可以还原为明文,理论上不可逆,不能进行解密操作。

到这里,无路可退了,要么换一种能加密解密的算法,要么继续在password上想办法了·····

受智商压制,我选择后种。我选择在前端将“密码”发给后端时,对密码做一个判断,string password长度为40时,此时发过去的密码已经是加密过的,不需要在此加密,如果不是40,会将密码继续按照存密码时用的hash算法在hash一次,并于数据库中的hash值作比较。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值