当前位置: 首页 > 后端技术 > Node.js

钉钉登录

时间:2023-04-03 20:46:26 Node.js

基于前后端分离的基本架构,应用的后端服务至少应该实现以下接口:1.登录接口/ding-login-cb【场景描述】用户扫码后登录的代码,钉钉服务内部会在redis中生成一个token,将token和用户信息返回给这个接口(通过回调)。【待实现的业务逻辑】从query中获取token,塞入cookie中。重定向到应用程序的主页。查询中可获取的参数:data|对象|用户信息令牌|字符串|redis密钥2。等待出接口/注销【场景描述】前端检测到用户未登录/或过期,弹出对话框。当用户点击对话框中的登录时,会直接发起一个get请求。求这个接口。该接口直接301到钉钉扫码登录页面,并在url中添加回调参数(处理钉钉的回调)。例子:在代码中直接301到这个地址http://cas.enbrands.com/ding-login?destUrl=http://your-domain.com/ding-login-cb在上面的URL中,值destUrl参数应该是你服务器的登录界面url【需要实现的业务逻辑】301扫描代码地址3.通用其他接口【场景描述】所有其他业务接口都应该实现verifySession(即从cookie中获取token,拿token去cas.enbrands.com查询登录状态,并验证结果),然后执行业务逻辑。【要实现的业务逻辑】从cookie中获取token,用token查询cas.enbrands.comhttps://cas.enbrands.com/verify?token=${token}根据结果(result.hasLogin?)hasLogin=false直接401hasLogin=true如果有效,继续执行业务逻辑,返回通常情况下。Verify接口的返回,result参数类型结构注意resultObject{hasLogin:true,userInfo:{}}codeNumber200or500errorObject错误信息UserInfo接口/user-info[场景描述]提供给前端,用于验证用户是否登录。类似一般的业务接口,验证完成后,不执行业务逻辑,可以返回结果直接地。【待实现的业务逻辑】从cookie中获取token,根据token查询cas.enbrands.comhttps://cas.enbrands.com/verify?token=${token}根据结果(result.hasLogin?)hasLogin=false直接4015如果hasLogin=true有效则返回200