前端结合vue-element-admin实现简单Oauth2.0内部第三方登录

文前推荐一下👉前端必备工具推荐网站(图床、API和ChatAI、智能AI简历、AI思维导图神器等实用工具):
站点入口:http://luckycola.com.cn/
图床:https://luckycola.com.cn/public/dist/#/imghub
多种API:https://luckycola.com.cn/public/dist/#/
ChatAI:https://luckycola.com.cn/public/dist/#/chatAi
AI思维导图神器:https://luckycola.com.cn/public/dist/#/aiQStore/aiMindPage

前端vue实现自己的第三方登录,并把用户信息渲染上去

前言:本篇只讲解在已经搭建好了Oauth2.0内部的第三方登录的后端服务,前端如何实现登录,在讲述第三方登录之前,不懂第三方登录流程的可以看看下面几篇文章,这种技术解决了内部系统的一个账号互通,牛一点的可以自己写一个完完整整的第三方

开发前准备

  • vue-element-admin的空模板 ->vue-admin-template这是GitHub下载地址
  • 一个已经搭建好的Oauth2.0的后端,这是自己学会Oauth2.0搭建的,可以用java、node等都能搭建,也可以看看第三方微信登录的实现原理。
  • 一个提供获取用户信息的接口
  • 还有一个可以 思考的脑袋😂

OAuth2.0的授权流程

OAuth2.0就是客户端和认证服务器之间由于相互不信任而产生的一个授权协议
这里是一个大体思路:
(A)用户打开客户端以后,客户端要求用户给予授权。

(B)用户同意给予客户端授权。

(C)客户端使用上一步获得的授权,向认证服务器申请令牌。

(D)认证服务器对客户端进行认证以后,确认无误,同意发放令牌。

(E)客户端使用令牌,向资源服务器申请获取资源。

(F)资源服务器确认令牌无误,同意向客户端开放资源。

前端操作流程

  1. (这一步是后端处理)在了解第三方登录前提下,用一个最简单的流程来体验一下Oauth2.0的登录,当用户点击了的第三方登录的按钮之后,会跳到一个内部账号密码验证(客户端),换取一个code,然后会跳到一个授权页面(认证服务器),这个授权有客户端id(client_id)、授权模式、授权权限、重定向等拿着信息去认证服务器换取一个访问令牌(token),最后拿着令牌去资源服务器请求资源,这就是最简单的授权,其实操作起来也就几秒钟的事,但这几秒钟执行了一堆流程
    Oauth2.0图示
    下面是一个完整Oauth2.0的登录流程

登录流程描述
2. 接下来是关于前端拿到令牌token之后的操作,结合vue-amdin-template,最终目的是拿到用户信息渲染到页面上

  • 第一步前端拿到后端传来的token ,我们放到cookie里(用中间页存token,处理一些逻辑)
  • 第二步取cookie中的token 实现登录(permission.js中修改逻辑)
  • 第三步拿token放到请求头(在请求拦截器中),头信息根据约定好的具体修改,根据提供的接口发请求, 就会返回用户信息对象{},拿到用户放cookie。
  • 第四步就是从cookie中拿到用户信息,渲染到页面上
  • 还有一个前端实现登出,点击退出,删除用户信息以及token

结合vue具体的实现过程

1. 前端拿到后端传来的token ,我们放到cookie里(用中间页存token,处理一些逻辑)
  • 先创建一个中间页middlepage,在路由文件中(router/index.js)配置一下
    创建路由
  • 在router/index.js文件中要改一下路由的模式(一定要改)
    路由模式
  • 配置好router时,要在permission.js中的白名单里加一下,让用户可以访问到这个页面(可以上授权时重定向回来)
    定义白名单
  • 让我们设置一下往cookie里存放token的方法,在auth.js里(提前设置好关于存token和存用户信息的这些方法)
    这是key

    下面是关于token和用户信息方法
    定义关于cookie的方法
  • 在store中的user.js创建一个异步方法用来往cookie里存token的,并全局更新state中token的数据
    更新数据源
    登录的方法
  • 在中间页middlepage中处理一些逻辑,判断后端传没传来token
    middlepage的判断
    以上执行完毕去浏览器cookie里看看存没存
    cookie中的token
2. 取cookie中的token 实现登录(permission.js中)

取token

3. 拿token放到请求头(在请求拦截器中),头信息根据约定好的具体修改,根据提供的接口发请求, 就会返回用户信息对象{},拿到用户放cookie
  • 拿到token放到头信息
    存头信息
  • 根据api设置一个接口
    api接口
  • 提前定义好发请求的方法,还是在store/user中
    获取用户信息
    -调用GetInfo发请求(在permission.js中),判断是否第一次登录
    获取用户信息
4. 4. 最后就是从cookie中拿到用户信息,渲染到页面上
  • 在首页上调用从cookie中拿用户信息的方法

在这里插入图片描述
在这里插入图片描述

  • 拿到数据渲染上去就行
    在这里插入图片描述
    到这就可以拿到信息渲染成功
    在这里插入图片描述
    token
5. 前端实现登出
  • 在全局user.js中设置一个前端登出,清除token以及清除用户信息
    在这里插入图片描述
  • 在退出的Navbar中绑定前端登出的方法
    在这里插入图片描述
    在这里插入图片描述

最后到这就结束了,学到了就一键三连,谢谢啦~

更多推荐:wantLG的《普歌-码上鸿鹄团队:微信小程序使用阿里巴巴iconfont矢量多色图标


  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wantLG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值