前后端分离项目token怎么验证_微信端前后端分离开发中token验证和数据的获取...
微信端前后分离开发中,授权认证,获取token和openid是必不可少的一步。
我们的思路是,每次调用接口前,判断cookie里面是否有token和openid,没有的话判断url参数中是否存在,没有的话跳转到授权认证页面。授权认证之后,会将token和openid放在url上返回回来,然后添加到cookie,这样就形成了一个闭环。代码如下
export function Cklogin () {
let url = window.location.href
let admin = {
openid: '',
token: ''
}
if (getCookie('openid') && getCookie('token')) {
admin.openid = getCookie('openid')
admin.token = getCookie('token')
} else {
if (getQueryString('openid') && getQueryString('token')) {
setCookie('openid', getQueryString('openid'))
setCookie('token', getQueryString('token'))
admin.openid = getCookie('openid')
admin.token = getCookie('token')
} else {
window.location.href = 'http://aaaa?returnUrl=' + url
}
}
return admin
}
// --------------获取cookie
function getCookie (cookieName) {
let allcookies = document.cookie
let cookiePos = allcookies.indexOf(cookieName)
let value = ''
if (cookiePos !== -1) {
cookiePos += cookieName.length + 1
let cookieEnd = allcookies.indexOf(';', cookiePos)
if (cookieEnd === -1) {
cookieEnd = allcookies.length
}
value = unescape(allcookies.substring(cookiePos, cookieEnd))
}
return value
}
// -------获取url中的参数
function getQueryString (name) {
let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i')
let r = window.location.search.substr(1).match(reg)
if (r != null) return unescape(r[2]); return null
}
// -----------------设置cookie
function setCookie (name, value) {
let Days = 30
let exp = new Date()
exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000)
document.cookie = name + '=' + escape(value) + ';expires=' + exp.toGMTString()
}
然后是config.js ,这里主要做两个配置,第一是定义一个判断返回值是否正确的ERR_OK变量,另一个就是定义axios。axios默认会以get方式发送请求,显然我更想要一个post。但是试了半天总是有问题,找到一个方法,封装起来着这里统一调用。
import axios from 'axios'
export const ERR_OK = 0
export function axiosFn (url, data) {
return axios({
url: url,
method: 'post',
data: data,
transformRequest: [function (data) {
let ret = ''
for (let it in data) {
ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
}
return ret
}],
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).then((res) => {
return Promise.resolve(res.data)
})
}
然后就是业务调用了。又来了上面几步,这里就简单了。首先要进行环境判断,开发环境下我是用固定的token和openid即可,因为开发环境下没办法微信授权获取认证。生产环境的时候,我们就要调用校验,然后获取token和openid,如果token和openid没有,便会进行重新授权认证获取。
import {axiosFn} from './config'
import {Cklogin} from './cklogin'
export function getInitVals () {
let url = ''
let data
if (process.env.NODE_ENV === 'development') {
data = {
'openid': '11',
'token': 'asdfsdfsfsf'
}
} else if (process.env.NODE_ENV === 'production') {
let CkloginFn = Cklogin()
data = {
'openid': CkloginFn.openid,
'token': CkloginFn.token
}
}
url = 'http://aaaaaaa'
return axiosFn(url, data)
}
前后端分离项目token怎么验证_微信端前后端分离开发中token验证和数据的获取...相关推荐
- 微信 SHA1 签名_微信公众号自动回复功能开发
微信公众号自动回复功能开发 本篇主要讲解 微信公众号自动回复功能开发,让我们自己去托管公众号回复的功能,这样可以更加灵活的根据公众号收到的信息来制定特定的回复信息,一起来了解吧! 1.注册公众号 如果 ...
- 概要设计 英文_互联网知识大全:软件开发中和文档常见的英文缩写,还不快收藏...
概要设计 英文_互联网知识大全:软件开发中和文档常见的英文缩写,还不快收藏... https://blog.csdn.net/weixin_39914243/article/details/11123 ...
- 新手摸爬滚打:vue+springboot前后端分离项目演示(三)——axios实现前后端交互
导语:路漫漫其修远兮,吾将上下而求索 前篇: 新手摸爬滚打:vue+springboot前后端分离项目演示(一)--vue cli创建vue2项目 新手摸爬滚打:vue+springboot前后端分离 ...
- 微信小程序python token验证_微信小程序登录对接Django后端实现JWT方式验证登录
点击授权按钮后可以显示部分资料和头像,点击修改资料可以修改部分资料. 1.使用微信小程序登录和获取用户信息Api接口 2.把Api获取的用户资料和code发送给django后端 3.通过微信接口把co ...
- url 微信公众号开发 配置失效_微信开发者中心配置服务器url时token验证失败的原因和处理方法...
一.问题由来 在使用URL和Token启用微信公众平台开发模式消息接口的时候,我们会碰到下面三种情况 1. token校验失败 这样回头检查一下各项配置是否正确.如果确定配置没有问题,请按下面的方法检 ...
- api token 什么意思_还分不清 Cookie、Session、Token、JWT?
什么是认证(Authentication) 通俗地讲就是验证当前用户的身份,证明"你是你自己"(比如:你每天上下班打卡,都需要通过指纹打卡,当你的指纹和系统里录入的指纹相匹配时,就 ...
- 项目创建venv、_都2020年了,居然还有人没有在数据科学项目中使用Docker?
本文将告诉大家什么是 Docker 以及如何在 Python 中使用 Docker. 新手程序员面临的最困难的问题之一是理解"环境"的概念.环境就是你编写代码的系统,听起来很容易, ...
- passport身份验证_了解如何使用Passport.js处理Node身份验证
passport身份验证 by Antonio Erdeljac 通过安东尼奥·埃尔德雅克 了解如何使用Passport.js处理Node身份验证 (Learn how to handle authe ...
- 微信阅读原文直接打开浏览器_微信打开网址添加在浏览器中打开提示
使用 http://mp.weixin.qq.com/mp/redirect?url=http://caibaojian.com/test.apk#weixin.qq.com#wechat_redir ...
最新文章
- 《结网》十年,《结网2》开启产品经理的无限游戏
- 历届华人 AAAI Fellows
- 教你用java统计目录下所有文档的词频
- php母版页怎么,ASP.NET
- springMVC通过spring.xml对属性注入bean值(工厂模式)
- opencv 检测几何图形_使用OpenCV + ConvNets检测几何形状
- 微软用的工具,统一财务三大表及高级分析通用模板
- [react] 使用react写一个todo应用,说说你的思路
- Android 跳转到ViewPager指定页面
- html怎么设计自动出现提示的数据列表?怎么设计数据列表像百度一样怎么随用户输入而更新
- 介绍Node assert, should.js, mocha, Karma, Travis CI
- censtos6.5安装java 8_Centos6.5 安装JDK
- 有Excel、Tableau、PowerBI都能做数据分析,为什么还要用Python
- 操作系统---高响应比优先调度算法实例
- linux下的超级服务器inetd
- C语言为什么不执行数组下标的有效性检查
- c语言写红绿灯程序,51单片机用C语言实现交通灯(红绿灯)源程序
- 设置GPU及显存大小
- 怎么样区分劳动关系和劳务关系
- C++打开文件夹中的多个文件并计算文件中数据的平均值