vue实现企业微信扫码登录后台管理系统

大致流程

  1. 在登录页面构建内嵌式登录二维码(这种方式好处:无需跳转到企业微信域下登录后再返回,提升企业微信登录的流畅性与成功率)
  2. 扫二维码之后,微信那边会跳转到redirect_uri你重定向的地址,后面会拼接code参数,一般重定向地址都是本页面(这里指的是是登录页面)
  3. 在本页面获取url后面拼接的code,用code去请求后台接口
  4. 后台接口服务那边用access_token和code去获取用户的企业微信号
  5. 通过企业微信号查找数据库中是否存在,存在返回用户的基本信息,否则不存在返回提示‘该用户非企业人员’

代码实现

public/index.html 引入js文件:

<script src="https://wwcdn.weixin.qq.com/node/wework/wwopen/js/wwLogin-1.2.7.js"></script>

需要显示登录二维码的页面(这里指登陆页面)构建二维码及相关代码的实现:

显示二维码的容器:

<div id="wx_qrcode" class="wxcodeSty" />

实例化构建相关代码:

// 监听路有变化获取code参数值
watch: {
  "$route.query": {
    handler(newVal, oldVal) {
      console.info(newVal, oldVal);
      this.authCode = this.$route.query["code"];
      this.authCode && this.getStaffInfo(); //获取到code,调用后端接口换取token
    },
    deep: true,
    immediate: true,
  },
},

mounted() {
  this.initCode();
},

methods: {
  // 构造实例
  initCode() {
    new WwLogin({
      id: "wx_qrcode",
      // [appid] 企业微信的CorpID,在企业微信管理端查看
      appid: "xxxxxxxxxxxxxx",
      // [agentid] 授权方的网页应用ID,在具体的网页应用中查看
      agentid: "xxxxxx",
      // [redirect_uri] 重定向地址,需要进行UrlEncode
      redirect_uri: encodeURIComponent("https://xxxx.com/#/login"),
      // [state] 用于保持请求和回调的状态,授权请求后原样带回给企业。
      // 该参数可用于防止csrf攻击(跨站请求伪造攻击),建议企业带上该参数,可设置为简单的随机数加session进行校验
      state: Date.now() + "xxxxxxxxxxxxxxxxx",	//这里可使用上面appid
      // [href] 自定义样式链接,企业可根据实际需求覆盖默认样式
      href: "https://xxxx.com/wxCode/wxQrcode.css",
    });
  },
  
  // 企业微信扫码登录
  getStaffInfo() {
    this.$store
      .dispatch("wxLogin", { authCode: this.authCode })	//wxLogin 是store里写的请求后台接口的actions 实现名字
      .then(() => {
        this.$router.push({ path: "/" });
      })
      .catch((err) => {
      	//这行代码一定要写,不然扫码登录失败后,刷新页面话会重复登录报提示错误
        this.$router.push({ path: "/login" });	
        this.$message({
          showClose: true,
          message: err,
          type: "error",
        });
      });
  },
}

store里扫码登录请求后台接口的实现:

// 引入登录请求接口
import { providerLogin } from '@/api/login/login'

actions: {
 	// 企业微信登录
	wxLogin({ commit }, authCode) {
	  return new Promise((resolve, reject) => {
	    providerLogin(authCode).then(res => {
	      if (res.data.code == 200) {
	      	// 下面几行代码是存储登录成功后的相关信息,与此次无关,相关代码就不展示了
	        commit('SET_TOKEN', res.data.data.token);
	        commit('SET_EXPIRESAT', res.data.data.expiresAt);
	        commit('SET_USERINFO', res.data.data.user);
	        setToken(res.data.data.token, new Date(res.data.data.expiresAt));
	        setExpires(res.data.data.expiresAt, new Date(res.data.data.expiresAt));
	        setUserInfo(res.data.data.user, new Date(res.data.data.expiresAt));
	        resolve();
	      } else {
	        reject(res.data.msg);
	      }
	    }).catch(error => {
	      reject(error);
	    })
	  })
	},
}

请求接口api封装:

// 企业微信登录
export function providerLogin(data) {
	return request({
		url: '/admin/base/providerLogin',
		method: 'post',
		data
	})
}

效果图 (图片打马赛克是为了防止csdn审核图片说违规而被删除)

企业微信扫码二维码

注意:效果图也可以自定义,使用登录实例js代码里的href字段,里面写你自定义样式文件服务器的位置路径,为了防止项目打包导致样式文件位置无法获取,位置最好放在在项目中public文件夹下,如下图所:(只支持https协议的资源地址)

自定义样式文件位置

基本上就这些了,该说的也差不多了,还有疑问的小伙伴可以在评论区咨询我,看到留言会回复的~

具体企业微信内部登录相关文档请查看:企业微信扫码授权登陆

Vue企业微信扫码登录是一种在Vue框架下实现的方式,用于实现用户通过扫描企业微信二维码进行系统登录的需求。在实现这个需求时,需要解决两个关键技术问题。首先是如何在网页端生成企业微信的二维码,其次是用户扫码完成后如何确定是哪个用户扫描的二维码,或者如何将这个信息告知后端。下面我将一步步为您解释如何实现这个需求。 首先,生成企业微信的二维码可以通过构造扫码登录链接来实现。在企业微信扫码登录流程中,有两种方法可以构造扫码登录链接:一种是构造独立窗口登录二维码,另一种是内嵌登录二维码。根据您的需求,内嵌登录二维码更符合要求。 其次,为了确定是哪个用户扫描的二维码,或者将这个信息告知后端,需要进行企业微信后台管理平台的配置。您可以登录企业微信后台管理平台,通过扫描企业微信二维码进入管理平台。请注意,只有企业的管理员角色才能登录进入管理平台。如果您没有权限,可以请管理员帮助您赋予权限。如果没有企业或者想先进行测试,您可以在企业微信的app端上以个人为主体创建一个企业组织。 通过以上步骤,您就可以在Vue框架下实现企业微信扫码登录的需求了。希望对您有所帮助。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [Vue 实现企业微信扫码登录](https://blog.csdn.net/weixin_36894745/article/details/106125761)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [vue实现网页端企业微信扫码登录功能(前端部分)](https://blog.csdn.net/weixin_38611617/article/details/128643445)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值