精华内容
下载资源
问答
  • 获取token

    千次阅读 2019-04-23 17:21:06
    今天咱们来说说怎么通过代码来获取token 获得token的话首先会有甲方提供一些数据给你们 类似于这种,token的入参和出参。 接着咱们就可以写代码了。 /** * 获取token * @return */ public String ...

    今天咱们来说说怎么通过代码来获取token
    获得token的话首先会有甲方提供一些数据给你们

    在这里插入图片描述
    类似于这种,token的入参和出参。

    接着咱们就可以写代码了。

    /**
    	 * 获取token
    	 * @return
    	 */
    	public String getToken(){
    		String shortUrl = WEIXIN_SHORT_TOKEN;	//这是一个token的入参url 只是我把它放到配置文件了。
    		logger.info("json_token_short requestUrl:"+ shortUrl);
            String jsonTokenShort = null;
    		try {
    			jsonTokenShort = httpClientWraper.mockPostJsonNew(shortUrl, null, false);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
            logger.info("获取jsonTokenShort响应:"+jsonTokenShort);
            Map<String,Object> mapResultShort = (Map)JSON.parse(jsonTokenShort);
    //        if (jsonTokenShort.contains("errcode") && !mapResultShort.get("errcode").toString().equals("0")) {
    //            throw new GzhBizRuntimeException(mapResultShort.get("errcode").toString(),mapResultShort.get("errmsg").toString());
    //        }
            Object tokenShortA = mapResultShort.get("value");
            if(tokenShortA == null){
            	throw new GzhBizRuntimeException(RespCodeEnum.GET_SHORT_TOKEN_ERREO.getRespCode(),
                        RespCodeEnum.GET_SHORT_TOKEN_ERREO.getRespMsg());
            }
            String tokenShortB = mapResultShort.get("value").toString();
            String longUrl = WEIXIN_LONG_TOKEN.concat("dataface/wechatKey?token=") + tokenShortB ;
            logger.info("json_token_long requestUrl:"+ longUrl);
    //        String longUrl = String.format(url_template,tokenShort);
    //        logger.info("json_token_long requestUrl:"+ longUrl);
            String jsonTokenLong = null;
    		try {
    			jsonTokenLong = httpClientWraper.mockPostJsonNew(longUrl, null, false);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
            logger.info("获取jsonTokenShort响应:"+ jsonTokenLong);
            Map<String,Object> mapResultLong = (Map)JSON.parse(jsonTokenLong);
    //        if (jsonTokenShort.contains("errcode") && !mapResultLong.get("errcode").toString().equals("0")) {
    //            throw new GzhBizRuntimeException(mapResultLong.get("errcode").toString(),mapResultLong.get("errmsg").toString());
    //        }
            Object tokenLongA = mapResultLong.get("value");
            if(tokenLongA == null){
            	throw new GzhBizRuntimeException(RespCodeEnum.GET_LONG_TOKEN_ERREO.getRespCode(),
                        RespCodeEnum.GET_LONG_TOKEN_ERREO.getRespMsg());
            }
            String tokenLongB = mapResultLong.get("value").toString();	
            Map<String,Object> mapResult = (Map)JSON.parse(tokenLongB);
            String token = mapResult.get("key").toString();
            tokenMap.put("token", token);
            logger.info("token>>>>>>>>>>>>>>>>>>>>>>>" + token);
            return token;
    	}
    

    这个方法就可以获取到token了。
    这个是获取了两次,第一次获取短的token,然后第二次获取长的token并使用拼接把短的token也拼接上去。最后才获取到最后的token。获取两次是为了安全。

    还有一个提交的工具类 里面有个post提交的方法。我这个入参只能用post访问。

      public String mockPostJsonNew(String url,String parameter,boolean isValid) throws Exception {
    		PostMethod postMethod = new PostMethod(url);
    		RequestEntity requestEntity;
    		if(parameter != null){
    			try {
    				requestEntity = new StringRequestEntity(parameter,"application/json","UTF-8");
    			} catch (UnsupportedEncodingException e) {
    				logger.error(e.getMessage());
    				throw new Exception(e.getMessage());
    			}  
    			postMethod.setRequestEntity(requestEntity); 
    		}
    		return executeMethod(postMethod,isValid);
    	}
    

    如果是get提交的话 我也写了个get提交的方法

    public  String mockGet(String url) {
            HttpClient httpClient = new HttpClient();
            if(isValid){
                logger.info(">>>>>>>>>>>>>>>开启代理。");
                //设置代理请求
                httpClient.getHostConfiguration().setProxy(proxyAddress,proxyPort);
            } else {
                logger.info(">>>>>>>>>>>>>>>未开启网络代理。");
            }
            HttpMethod getMethod = new GetMethod(url);
            try {
                int statusCode = httpClient.executeMethod(getMethod);
                if (HttpURLConnection.HTTP_OK == statusCode) {
                    return execute(getMethod);
                }
            } catch (Exception e) {
                logger.error(e.getMessage(),e);
                throw new GzhBizRuntimeException("-1", e.getMessage(),e);
            }
    
            return "";
        }
        
    

    你们如果没有设置代理的话,代理这块可以删除掉。

    最后…
    博主是一枚小白,记录工作上目前对博主而言比较难的问题。
    如果错误请私信博主。谢谢,有不懂的也可以找博主哦~

    展开全文
  • 在vue中如何获取token,并将token写进header

    万次阅读 多人点赞 2018-03-15 16:12:25
    在login.vue中通过发送http请求获取token//根据api接口获取token var url = this.HOST + "/session"; this.$axios.post(url, { username: this.loginForm.username, password: this.loginForm.pa...
    需要准备的东西:Vue+axios+Vuex+Vue-router
     
    1.在login.vue中通过发送http请求获取token

     

     
    //根据api接口获取token
    var url = this.HOST + "/session";
    this.$axios.post(url, {
      username: this.loginForm.username,
      password: this.loginForm.pass
    }).then(res => {
      // console.log(res.data);
      this.$message.success('登录成功');
      let data = res.data;
      //根据store中set_token方法将token保存至localStorage/sessionStorage中,data["Authentication- 
      //Token"],获取token的value值
      this.$store.commit('set_token', data["Authentication-Token"]);
    
    if (this.$store.state.token) {
      this.$router.push('/')
    } else {
      this.$router.replace('/login');
    }
    
    }).catch(error => {
      // this.$message.error(error.status)
      this.loading = false
      this.loginBtn = "登录"
      this.$message.error('账号或密码错误');
      // console.log(error)
    })
    

     
     
    2.在store.js中对token状态进行监管
     
    import Vue from 'vue'
    import Vuex from 'vuex'
    
    
    Vue.use(Vuex)
    
    export default new Vuex.Store({
      state:{
        token:''
      },
      mutations:{
        set_token(state, token) {
            state.token = token
            sessionStorage.token = token
        },
        del_token(state) {
            state.token = ''
            sessionStorage.removeItem('token')
        }
       }
    })
    
     
    3.在router/index.js中
    import Vue from 'vue'
    import Router from 'vue-router'
    import store from './store'
    
    // 页面刷新时,重新赋值token
    if (sessionStorage.getItem('token')) {
        store.commit('set_token', sessionStorage.getItem('token'))
    }
    
    const router = new Router({
        mode: "history",
        routes
    });
    
    router.beforeEach((to, from, next) => {
      if (to.matched.some(r => r.meta.requireAuth)) {           //这里的requireAuth为路由中定义的                         
        meta:{requireAuth:true},// 意思为:该路由添加该字段,表示进入该路由需要登陆的
        if (store.state.token) {
            next();
        } else {
            next({
                path: '/login',
                query: {redirect: to.fullPath}
            })
        }
      } else {
        next();
      }
    })
    

     
     
     
     
     
    4.在main.js中定义全局默认配置:

     

    Axios.defaults.headers.common['Authentication-Token'] = store.state.token;
     
    5.在src/main.js添加拦截器,(先引入store.js)
     
    import Vue from 'vue'
    import Element from 'element-ui'
    import 'element-ui/lib/theme-chalk/index.css'
    import store from './store'
    import App from './App'
    import router from './router'
    import Axios from 'axios'
    
    // 添加请求拦截器
    Axios.interceptors.request.use(config => {
      // 在发送请求之前做些什么
      //判断是否存在token,如果存在将每个页面header都添加token
      if(store.state.token){
        config.headers.common['Authentication-Token']=store.state.token
      }
    
      return config;
    }, error => {
      // 对请求错误做些什么
      return Promise.reject(error);
    });
    
    // http response 拦截器
    Axios.interceptors.response.use(
    response => {
    
      return response;
    },
    error => {
    
    if (error.response) {
      switch (error.response.status) {
        case 401:
        this.$store.commit('del_token');
        router.replace({
          path: '/login',
          query: {redirect: router.currentRoute.fullPath}//登录成功后跳入浏览的当前页面
        })
        break
      }
    }
    return Promise.reject(error.response.data)
    });
    ------------------------------------------------------------------------------------
    ...................完成以上步骤就可以了..........................
    ------------------------------------------------------------------------------------

     

    展开全文
  • 在调用接口是 接口里是有token的 但是 如果并发 token值被覆盖,就会造成其他接口报错, ...首先写个静态方法 获取 token 加上定时器让他2分钟或者1分钟执行一次 ,这样也不用担心token会失效了,因为我每个2分...

    在调用接口是 接口里是有token的
    但是 如果一个页面 有好几个接口需要调用 token的话 toke值就被覆盖,可能最后请求一个或者两个接口是正常返回数据, 其他接口就会报错,这是应为 你调用接口会验证最新获取的token 所以其他的就会报错,解决
    其实有很多办法 比如 存放到redis 或者数据库里 但是token有过期时间 token会失效 所以需要更新,这样的其实比较 费事的,
    解决:
    其实一个定时任务就可以解决
    首先写个静态方法 获取 token 加上定时器让他2分钟或者1分钟执行一次 ,这样也不用担心token会失效了,因为我每个2分钟就更新一次 每次更新都是新的token 在定义一个全局变量,获取静态得到token 之后 需要用到token的地方就直接 放进去就行了

        public static String token=null;
    
      @Scheduled(fixedDelay = DataConstants.LLL)
        public static  String Authorization ()throws JSONException {
           String authorization =HttpClient.getToken();
            token=authorization;
           return authorization;
        }
    

    调用示例

     @RequestMapping("xxxxxx")
        @ResponseBody
        public ActionResult getPaperAchievements(String name, String orgName, Integer pageNo, Integer pageSize) throws JSONException {
            MultiValueMap<String, String> params1 = new LinkedMultiValueMap<>();
            String url = ExpertUtil.EXPERT + orgName + "/" + name + ExpertUtil.EXPERTPAPER + "?" + pageNo + "&" + pageSize;
            HttpHeaders headers = new HttpHeaders();
            //设置请求头放进token
            headers.add("Authorization",token);
            System.out.println(token+"------"+1+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
            headers.add("AppKey", JournalismUtil.JOURNALISMTOKENAPPKEY);
            String paper =null;
            try {
                paper = HttpClient.sendGETRequest(url, params1, headers);
            } catch (Exception e) {
                return ActionResult.success(null);
            }
            return ActionResult.success(paper);
        }
    
    

    然后打印的 token值是一致的 没有出现值不一致的情况
    在这里插入图片描述

    展开全文
  • 场景:甲方要求和他们已有...存在的坑:使用postMan获取token数据,并进行token数据的提交没有问题,但是使用Java代码提交数据时返回401,也就是权限不足,权限不足的原因要么是token传递值有问题,要么是token传递...

    场景:甲方要求和他们已有的项目进行对接,并提供个两个接口,一个是根据用户名和密码提交post请求,获取token信息,一个是根据第一个接口返回的token,将token以及一些业务数据进行提交。

    存在的坑:使用postMan获取token数据,并进行token数据的提交没有问题,但是使用Java代码提交数据时返回401,也就是权限不足,权限不足的原因要么是token传递值有问题,要么是token传递过去了,甲方那边没有取到token值。

    出坑:经过多长尝试无效,被逼无奈,最后直接要了甲方获取token的代码,代码如下:

    final String requestHeader = request.getHeader("Authorization");

    authToken = requestHeader.substring(7);

    从代码中可以看到,甲方是从传递过去的值中从第7位开始截取的。所以以前传递的token值从第7位开始截取,就导致了token内容不对。

    结论:

    使用postMan模拟post请求在head传递请求时,会在token前面添加7个字符,具体是什么字符,我没有研究,在网上找到如下方法设置head中的token问题解决:(Bearer 后面的一个空格一定要,否则有会截取错误)

    httpPost.setHeader("Authorization","Bearer "+token);

    展开全文
  • 本文主要对从用户发起获取token的请求(/oauth/token),到请求结束返回token中间经过的几个关键点进行说明。 2.认证会用到的相关请求 注:所有请求均为post请求。 获取access_token请求(/oauth/token) 请求...
  • github获取token

    万次阅读 多人点赞 2017-02-17 15:36:16
    下载yii2.0框架要用到github的token,下面将获取token的过程记录一下: 1、在https://github.com登录你的帐号,登录以后点击右上角你的头像的Settings 2、 点击Developer settings下的Personal access tokens 如果...
  • 如何通过 Python 获取 Token 操作资源08/31/2017本文内容在使用 Python SDK 操作 Azure 资源时,首先需要获取认证的 Token,然后才能对资源的做进一步的操作。本文分别介绍了基于 Azure AD 和 Azure 账户名和密码两...
  • postman获取token信息

    2021-01-29 11:34:30
    postman获取token信息 (1)发送登录接口 (2)获取请求中token节点数据 postman.setGlobalVariable("token",JSON.parse(responseBody).content.content); //把返回参数中的keys设置为环境变量 (3)其他接口中...
  • postman 自动获取Token

    千次阅读 2019-06-12 20:29:54
    文章目录简介操作步骤建立一个collection建立一个请求token的request最后在Tests中增加这样几行js代码设置集合默认获取token的方式创建token free的request 简介 在进行测试前,使用获取token的request,获取一次...
  • admin获取token|刷新token|注销token

    千次阅读 2019-09-18 10:24:24
    //后台调用对象 varadmin={ /** *获取Token *@paramusername用户名 *@parampassword密码 *@paramcallback回调函数 */ getToken:function(username,password,callback){ ...
  • 解决方案:自动获取token、设置token 1.把登陆接口返回的token自动设置到环境变量(Environment)的token中 1)获取登陆接口的responseBody,确定token的位置,如下图所示,位置是data.data.token 2)、设置Pos....
  • 微信获取token,并存储token方法

    千次阅读 2019-07-26 14:48:53
    微信获取token,并存储token方法:https://www.cnblogs.com/yangchunlong/articles/8608039.html
  • kubernetes获取token命令

    2020-10-24 13:50:04
    kubernetes获取token命令 kubectl describe secret/$(kubectl get secret -nkube-system |grep admin|awk '{print $1}') -nkube-system
  • Session存放token/获取token,销毁session

    千次阅读 2020-06-18 16:31:07
    Session存放token/获取token,销毁session 这里记录下session使用.方便学习 session使用的是: javax.servlet.http.HttpSession 话不多说了.直接上代码! java代码 request.getSession().setAttribute(“token”, ...
  • vue获取token登录的过程

    千次阅读 2020-03-09 22:26:31
    vue获取token登录的过程: 1,访问需要登录的页面的时候,利用路由守卫跳转,输入正确的用户名密码 向后台的认证接口发送数据 2,获取token 用vuex存储 ,且存储到localstorage中,token后台设置过期时间 3,和axios...
  • 融云获取Token

    千次阅读 2016-06-14 15:29:43
    #import "AppDelegate.h" #import #import #import ...// 获取token - (void)getRCIMToken {  AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; // manager.requestSerializ
  • 新建文件 根目录/utils/token.js //设置键名,这里我设置的是固定的 const tokenKey = 'admin-token';...//获取token export function getToken(){ return sessionStorage.getItem(tokenKey); }; //.
  • 从cookies 获取token

    千次阅读 2018-06-12 14:13:00
    从cookie中获取token,在根据token获取想要的数据public String getToken2(HttpServletRequest request) throws Exception { try { Cookie[] cookies = request.getCookies(); if (cookies != null && ...
  • keystone获取token代码分析

    千次阅读 2017-12-21 15:01:47
    keystone获取token代码分析
  • 每次访问接口时获取token

    千次阅读 2019-07-02 15:45:47
    1.通过filter需要拦截验证是否登录 ... 2.访问controller时,先执行方法获取token获取token 的用户数据 @Autowired private HttpServletRequest request; private String to...
  • 通过URL获取token值 过期的URL无法get数据 通过[Pre-request Script]脚本自动获取token 注意:请求头去勾选token [Pre-request Script]脚本实现token参数化代码框架 pm.sendRequest({ url: ...
  • 接口1:登录获取token3.1接口参数3.2.1 注意事项:因为jeecg的请求方式和普通的post请求有些不同,所以使用下图2的传参方式3.2.2 注意事项:获取验证码ID,登录页面F12,可查看:3.2.3 注意事项:将获取到的token...
  • python获取token和cookie方法

    千次阅读 2018-12-11 14:50:07
    获取token:token为接口参数返回值 # -*- coding: utf-8 -*- # @File : get_token.py # @API_name: # @Time : 2018/12/11 10:37 # @Author : guozhen.deng # 获取token ,处理逻辑: # 传递cookie 至http://a*****...
  • 1. 使用axios import axios from ‘axios’ ...3. 在请求拦截里获取token保存到请求头 axios.interceptors.request.use( function (config) { // 在发送请求之前做些什么 // window.console.log(‘请求拦截’, config
  • 环信获取token

    千次阅读 2018-03-03 14:39:20
    环信对接的要点帮助-获取token。项目需要对接环信做临时通话,对接环信也是上网查了很多资料,今天把整理一下,方便也在做环信开发的省点时间。首先,你需要去看看环信的官网,大概了解下是做什么。...
  • 融云获取 Token 403 问题记录

    千次阅读 2019-02-12 11:50:26
    融云获取 Token 方法 参考文档:https://www.rongcloud.cn/docs/server.html#user_get_token 403 问题 最初我们会使用开发环境,随着测试用户的增长,你每次需要申请增加用户数量,但一次只能增加20个。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,466
精华内容 7,386
关键字:

获取token