精华内容
下载资源
问答
  • 围绕signature,timestamp,nonce,echostr取值都为null的问题折腾了许久的坑。...1、根据大神 https://blog.csdn.net/chmod_R_755/article/details/75554735 的文章,他最后的checkSignature方法写的Con...

    围绕signature,timestamp,nonce,echostr取值都为null的问题折腾了许久的坑。

    订阅号不能认证,所以在公众号设置中,没有网页授权域名这一项。不过微信提供了测试号供开发者使用。

    1、根据大神 https://blog.csdn.net/chmod_R_755/article/details/75554735 的文章,他最后的checkSignature方法和写的Controller接口可以都直接cv过来,代码时亲测可行的。

    这里写图片描述
    2、URL不能用本地localhost这种,我这里是使用了natapp,有免费隧道,但是域名随机分配。于是买了最便宜的隧道和3块钱的二级域名就可以使用了。看官方是说要80端口,所以在natapp里与本地项目中都修改成80端口。然后域名后面就是和平时跑项目接口一样的写法。

    3、Token要与你项目里写的一致。

    4、然后把项目跑起来。然后。。。。。。我就进坑了
    我一直是在浏览器地址栏输入该URL,访问后再点提交,提示我接口配置失败,也尝试过用微信打开该链接,然后再提交也失败,反复进行了好多次。

    断点一下发现request请求中参数都是null,signature,timestamp,nonce,echostr都获取不到。然后网上各种搜啊,都没找到我的这个问题。

    后来我脑子一闪,又重新跑了下项目,直接点了提交(根本不用自己发起请求,在点提交时,它就会向该URL发送请求来验证Token了),然后就成功了。。。
    这里写图片描述


    据说如果是体验测试,不需要填这两项,直接在下面体验接口权限表的网页账号,网页授权获取用户信息那里,点修改,填上自己的外网地址就可以了。。

    展开全文
  • 将define("TOKEN", "weixin")这句话中的weixin改成你自己的token,例如zijidetoken;然后点击右上角的全部保存。/*** wechat php test*///define your tokendefine("TOKEN", "weixin");$wechatObj = new ...

    将下面的代码加标点复制进去。将define("TOKEN", "weixin")这句话中的weixin改成你自己的token,例如zijidetoken;然后点击右上角的全部保存。

    /**

    * wechat php test

    */

    //define your token

    define("TOKEN", "weixin");

    $wechatObj = new wechatCallbackapiTest();

    $wechatObj->valid();

    class wechatCallbackapiTest

    {

    public function valid()

    {

    $echoStr = $_GET["echostr"];

    //valid signature , option

    if($this->checkSignature()){

    echo $echoStr;

    exit;

    }

    }

    public function responseMsg()

    {

    //get post data, May be due to the different environments

    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

    //extract post data

    if (!empty($postStr)){

    $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);

    $fromUsername = $postObj->FromUserName;

    $toUsername = $postObj->ToUserName;

    $keyword = trim($postObj->Content);

    $time = time();

    $textTpl = "

    %s

    0

    ";

    if(!empty( $keyword ))

    {

    $msgType = "text";

    $contentStr = "Welcome to wechat world!";

    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

    echo $resultStr;

    }else{

    echo "Input something...";

    }

    }else {

    echo "";

    exit;

    }

    }

    private function checkSignature()

    {

    $signature = $_GET["signature"];

    $timestamp = $_GET["timestamp"];

    $nonce = $_GET["nonce"];

    $token = TOKEN;

    $tmpArr = array($token, $timestamp, $nonce);

    sort($tmpArr);

    $tmpStr = implode( $tmpArr );

    $tmpStr = sha1( $tmpStr );

    if( $tmpStr == $signature ){

    return true;

    }else{

    return false;

    }

    }

    }

    ?>

    展开全文
  • 目录用户登陆,发送手机号码验证码后台接收参数,查找用户,用户存在就生成token,返回给前端前端登陆成功,把token存到vuex(做持久化)使用axios拦截器,读取vuex中的token,并放入请求头请求其他接口,就会带上token后台...

    目录

    用户登陆,发送手机号码和验证码

    后台接收参数,查找用户,用户存在就生成token,返回给前端

    前端登陆成功,把token存到vuex(做持久化)

    使用axios拦截器,读取vuex中的token,并放入请求头

    请求其他接口,就会带上token

    后台在需要登陆的接口上,获取token,解密token获得userId,返回前端需要的数据

    用户在下次使用app,如果token还在有效期内,不需要重新登陆

    (一) 用户登陆,发送手机号码和验证码

    async login() {

    // 发送请求,用post方式

    let url = "/login";

    // 请求参数

    let data = {

    phone: this.phone,

    smsCode: this.smsCode

    };

    let res = await this.$axios.post(url, data);

    console.log('res',res);

    }

    (二) 后台接收参数,查找用户,用户存在就生成token,返回给前端

    // 获取前端传过来的参数phone,smsCode

    let {

    phone,

    smsCode

    } = ctx.params;

    // 查找用户

    let result = findUser(phone, smsCode);

    // 找不到

    if (!result) {

    ctx.body = {

    code: 604,

    msg: '用户名或密码错误'

    }

    } else {

    // 把userId和其它相关信息加密成一个token,返回给前端

    let userInfo = {

    userId: result.userId,

    phone: result.phone

    }

    // 生成token

    let token = jwt.sign(userInfo, "web03-server", {

    // expiresIn: "1000h"

    expiresIn: "10s"

    });

    ctx.body = {

    code: 666,

    msg: '登陆成功',

    user: {

    phone,

    token

    }

    }

    }

    (三) 前端登陆成功,把token存到vuex(做持久化)

    login() {

    // 发送请求,用post方式

    let url = "/login";

    // 请求参数

    let data = {

    phone: this.phone,

    smsCode: this.smsCode

    };

    this.$axios.post(url, data).then(res => {

    // 修改登陆状态

    this.$store.commit("updateLogin", true);

    // 把token存入store

    this.$store.commit("updateToken", res.user.token);

    // 把用户名存入store

    this.$store.commit("updateUsername", res.user.phone);

    this.$router.push("/my");

    }).catch(err=> {

    console.log('登陆失败')

    });

    }

    (四) 使用axios拦截器,读取vuex中的token,并放入请求头

    // request拦截器,在请求之前做一些处理

    service.interceptors.request.use(

    config => {

    console.log('config',config);

    // 从vuex读取token的值,给请求头添加laohu-token

    if (store.state.token) {

    config.headers['laohu-token'] = store.state.token;

    }

    return config

    },

    error => {

    console.log(error) // for debug

    Promise.reject(error)

    }

    )

    (五) 请求其他接口,就会带上token

    74ff84e40d37

    image.png

    (六) 后台在需要登陆的接口上,获取token,解密token获得userId,返回前端需要的数据

    const jwt = require("jsonwebtoken");

    const util = require("util");

    const verify = util.promisify(jwt.verify);

    module.exports = async ctx=> {

    // 检查token

    const token = "Bearer " + ctx.header["laohu-token"];

    // 解密token

    try {

    let payload = await verify(token.split(" ")[1], "web03-server");

    console.log('token信息', payload);

    let userId = payload.userId;

    // 根据userId去数据库查询购物车的列表

    ctx.body = {

    code: 666,

    msg: 'success',

    list: [

    {

    name: '青轴键盘',

    price: 300

    },

    {

    name: '茶轴键盘',

    price: 400

    },

    {

    name: '红轴键盘',

    price: 600

    },

    ]

    }

    } catch (error) {

    console.log('error',error);

    ctx.body = {

    code: 603,

    msg: 'token不存在或者已失效'

    }

    }

    }

    (七) ps: 因为我们对vuex做了持久化,用户在下次使用app,发送请求也会带上token,如果token还在有效期内,不需要重新登陆

    展开全文
  • 获取资源的url和token

    2020-12-09 14:11:37
    <div><p>获取某个资源的url和token</p><p>该提问来源于开源项目:qiniu/legacy-ios-sdk</p></div>
  • HTTP 是一个无状态的协议,一次请求结束后,下次在发送服务器就不知道这个请求是谁发来的了(同一个 IP 不代表同一个用户),在 Web 应用中,用户的认证鉴权是非常重要的一环,实践中有多种可用方案,并且各有千秋。...

    HTTP 是一个无状态的协议,一次请求结束后,下次在发送服务器就不知道这个请求是谁发来的了(同一个 IP 不代表同一个用户),在 Web 应用中,用户的认证和鉴权是非常重要的一环,实践中有多种可用方案,并且各有千秋。

    基于 Session 的会话管理

    在 Web 应用发展的初期,大部分采用基于 Session 的会话管理方式,逻辑如下。

    • 客户端使用用户名密码进行认证
    • 服务端生成并存储 Session,将 SessionID 通过 Cookie 返回给客户端
    • 客户端访问需要认证的接口时在 Cookie 中携带 SessionID
    • 服务端通过 SessionID 查找 Session 并进行鉴权,返回给客户端需要的数据
    272f4380b1c30dd69e7e66edc2aaba0b.png

    基于 Session 的方式存在多种问题。

    • 服务端需要存储 Session,并且由于 Session 需要经常快速查找,通常存储在内存或内存数据库中,同时在线用户较多时需要占用大量的服务器资源。
    • 当需要扩展时,创建 Session 的服务器可能不是验证 Session 的服务器,所以还需要将所有 Session 单独存储并共享。
    • 由于客户端使用 Cookie 存储 SessionID,在跨域场景下需要进行兼容性处理,同时这种方式也难以防范 CSRF 攻击。

    基于 Token 的会话管理

    鉴于基于 Session 的会话管理方式存在上述多个缺点,无状态的基于 Token 的会话管理方式诞生了,所谓无状态,就是服务端不再存储信息,甚至是不再存储 Session,逻辑如下。

    • 客户端使用用户名密码进行认证
    • 服务端验证用户名密码,通过后生成 Token 返回给客户端
    • 客户端保存 Token,访问需要认证的接口时在 URL 参数或 HTTP Header 中加入 Token
    • 服务端通过解码 Token 进行鉴权,返回给客户端需要的数据
    7e0549a558a7ce7589a3c7a3dbc64eca.png

    基于 Token 的会话管理方式有效解决了基于 Session 的会话管理方式带来的问题。

    • 服务端不需要存储和用户鉴权有关的信息,鉴权信息会被加密到 Token 中,服务端只需要读取 Token 中包含的鉴权信息即可
    • 避免了共享 Session 导致的不易扩展问题
    • 不需要依赖 Cookie,有效避免 Cookie 带来的 CSRF 攻击问题
    • 使用 CORS 可以快速解决跨域问题

    JWT 介绍

    JWT 是 JSON Web Token 的缩写,JWT 本身没有定义任何技术实现,它只是定义了一种基于 Token 的会话管理的规则,涵盖 Token 需要包含的标准内容和 Token 的生成过程。

    一个 JWT Token 长这样。

    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDQ1MTE3NDMsImp0aSI6IjYxYmVmNjkyLTE4M2ItNGYxYy1hZjE1LWUwMDM0MTczNzkxOSJ9.CZzB2-JI1oPRFxNMaoFz9-9cKGTYVXkOC2INMoEYNNA

    仔细辨别会发现它由 A.B.C 三部分组成,这三部分依次是头部(Header)、负载(Payload)、签名(Signature),头部和负载以 JSON 形式存在,这就是 JWT 中的 JSON,三部分的内容都分别单独经过了 Base64 编码,以 . 拼接成一个 JWT Token。

    JWT 的 Header 中存储了所使用的加密算法和 Token 类型。

    { "alg": "HS256
    展开全文
  • js获取url参数值比如token和id

    千次阅读 2017-07-08 16:18:22
    比如要获取这个页面的URL后面的参数信息token和idindex.html?token=9b68dd98306327bf&id=15 (可以在后面index.html后面加上?token=9b68dd98306327bf&id=15刷新页面进行测试。)//获取地址参数 token,id ...
  • 微信公众开发URL和token填写详解

    万次阅读 2018-09-11 09:42:32
    【转】微信公众开发URL和token填写详解 很多人不明白微信公众号开发者中心服务器配置里面的url和token是什么,不会填写。看了教程也不理解是什么,本文详述一下这个问题。 第一步:作为一名微信公众号开发者,别人...
  • 微信公众号URL和Token配置验证

    千次阅读 2018-08-30 14:46:23
    微信公众号验证URL和Token的配置,以及在项目中获取Token进入正题首先准备一些事情; 测试的公众号:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 获得appId appsecret 为配置微信服务端; ...
  • SpringBoot入门建站全系列(十二)Spring Security使用token做认证Spring 是一个非常流行成功的 Java 应用开发框架。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。一般来说,Web ...
  • 1、微信小程序获取Access_token: access_token具体时效看官方文档。 using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Web; using TT....
  • 无论是正式的微信公众号还是测试账号,都需要配置URL和Token,用于验证服务器是否配置正确,如下图。 图中的URL除了包括协议、域名,还需要具体的接口路径,比如这里就是"/wx/enter"。 Token可以自己...
  • 微信测试号的URL和Token原理

    千次阅读 2015-10-31 19:06:56
    在我们提交URL和Token信息后,微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数: Signature(微信加密签名)、timestamp(时间戳)、nonce(随机数)、echostr(随机字符串)。 Signature 结合了开发者...
  • 1.双击ngrok输入一下两个命名 ...2.URL配置https://www.ngrok.io/wx/userAccount/getCode token 3.java代码如下 private static String token = "legalminer"; @RequestMapping(value = "/getCode", meth...
  • 微信测试公众号基本配置URL和Token的验证-JAVA
  • 公众号url签名java token

    2017-10-29 12:23:18
    资源有java asp.net 获取微信token 用于填写服务器地址开发。
  • 微信公众平台测试号的url和token原理

    千次阅读 2017-03-28 12:01:22
    1.在微信开发平台测试号后台填写的url和token 2.点击保存的时候微信服务器会自动发一个get请求到我们写的url上面! 我们要根据我们写的token做 签名验证 3.如果签名验证成功的话!把微信发给我们的随机字符串再...
  • 1、因为再微信公众号开发关键字回复的时候需要使用到接口配置信息URL和Token. 刚开始配置的时候总是失败,原因是自己使用花生壳的外网的端口不是80,所以我将外网端口该为了80,后来配置成功。 重点:1、这个一定...
  • 微信小程序urltoken设置详解新浪...class wechatAPI{public function isValid()//验证微信接口,验证函数以外的代码微信公众号开发token设置相同{$echoStr = $_GET["echostr"];if ($this->checkSignature()) ...
  • 很多人不明白微信公众号开发者中心服务器配置里面的url和token是什么,不会填写。看了教程也不理解是什么,本文详述一下这个问题。 第一步:作为一名微信公众号开发者,别人进入你的微信公众号,肯定会看见某些网页...
  • 微信小程序urltoken设置详解 新浪云应用sae的代码里创建一个weixin.php文件,写入以下代码 define(TOKEN,myToken);// 后台填写的token,在微信公众平台启用 $wechatObj = new wechatAPI(); $wechatObj->isValid()...
  •   define("TOKEN","myToken");...public function isValid()//验证微信接口,验证函数以外的代码微信公众号开发token设置相同 { $echoStr = $_GET["echostr"]; if ($this->checkSignature()) { header('content-ty
  • PHP 模拟登陆微信公众平台,一键绑定URL和TOKEN的功能 代码就不贴出来了,把思路记录一下吧。...②设置服务器配置(用于接收用户信息)那里,post提交URL和TOKEN; ③关闭编辑模式,打开开发模式;
  • token

    2021-01-12 16:45:11
    token的生成应用 接口:mvc模式 URL:restful风格 token 针对接口的(api_token) 职责是保持接口访问的隐蔽性有效性, 针对用户的(user_token) 职责是保护用户的用户名及密码多次提交,以防密码泄露 ...
  • 使用pcwap程序可以跟微信相同,成为开发者模式,然后通过PCWAP程序后台可以配置关键词回复(文本站内内容),关注时回复(文本站内内容),生成自定义菜单(服务号认证过的订阅号可用); 成为微信开者模式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,448
精华内容 979
关键字:

token和url