请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

加密认证逻辑总是认证不了

加密总是认证不了, 打印出来this, 发现了404, 

{ request: 

   { method: 'GET',

     url: '/favicon.ico',

     header: 

      { host: '127.0.0.1:8080',

        connection: 'keep-alive',

        'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36 QQBrowser/4.1.4132.400',

        accept: '*/*',

        referer: 'http://127.0.0.1:8080/',

        'accept-encoding': 'gzip, deflate, sdch',

        'accept-language': 'zh-CN,zh;q=0.8' } },

  response: { status: 404, message: 'Not Found', header: {} },

  app: { subdomainOffset: 2, proxy: false, env: 'development' },

  originalUrl: '/favicon.ico',

  req: '<original node req>',

  res: '<original node res>',

  socket: '<original node socket>' }

怎么破

正在回答 回答被采纳积分+3

4回答

提问者 慕田峪1594825 2016-08-26 18:01:19
'use strict'
var Koa = require("koa")
var path = require('path')
var wechat = require('./wechat/g')
var util = require('./libs/util')
var wechat_file = path.join(__dirname, './config/wechat.txt')
var config = require('./config')
var weixin = require('./weixin')
var app = new Koa()
app.use(wechat(config.wechat, weixin.reply))
app.listen(8080)
console.log("Listen: 8080")


0 回复 有任何疑惑可以回复我~
  • Scott #1
    这里是 app.use(wechat(config.wechat, reply.reply))
    
    reply 就是回复文件的 reply 模块
    回复 有任何疑惑可以回复我~ 2016-08-26 19:39:58
  • 提问者 慕田峪1594825 #2
    这样一改,报错reply is not defined
    回复 有任何疑惑可以回复我~ 2016-08-26 19:46:37
  • 提问者 慕田峪1594825 #3
    没有reply模块,有个weixin模块
    回复 有任何疑惑可以回复我~ 2016-08-26 19:56:42
Scott 2016-08-26 13:23:45

大哥,代码可以格式化一下么,眼睛看瞎了。


把这段代码贴一下,试试,另外把 app.js 贴一下,现在根据你提供的素材,看不到到底是哪个环节出问题了。


'use strict'
var sha1 = require('sha1')
var getRawBody = require('raw-body')
var Wechat = require('./wechat')
var util = require('./util')
module.exports = function(opts, handler) {
  var wechat = new Wechat(opts)
  return function *(next) {
    console.log(this.method)
    var token = opts.token
    var signature = this.query.signature
    var nonce = this.query.nonce
    var timestamp = this.query.timestamp
    var echostr = this.query.echostr
    var str = [token, timestamp, nonce].sort().join('')
    var sha = sha1(str)
    if (this.method === 'GET') {
      if (sha === signature) {
        this.body = echostr + ''
      }
      else {
        this.body = 'wrong'
      }
    }
    else if (this.method === 'POST') {
      if (sha !== signature) {
        this.body = 'wrong'
        return false
      }
      var data = yield getRawBody(this.req, {
        length: this.length,
        limit: '1mb',
        encoding: this.charset
      })
      var content = yield util.parseXMLAsync(data)
      console.log(content)
      var message = util.formatMessage(content.xml)
      console.log(message)
      this.weixin = message
      yield handler.call(this, next)
      wechat.reply.call(this)
    }
  }
}


0 回复 有任何疑惑可以回复我~
提问者 慕田峪1594825 2016-08-26 10:02:43

'use strict'

var sha1 = require('sha1')

var Wechat = require('./wechat')

var getRawBody = require('raw-body')

var util = require('./util')

module.exports = function (opts, handler) {

var wechat = new Wechat(opts)

return function *(next) {

var that = this

console.log(this.query)

var token = opts.token

var signature = this.query.signature

var nonce = this.query.nonce

var timestamp = this.query.timestamp

var echostr = this.query.echostr

var str = [token, timestamp, nonce].sort().join('')

var sha = sha1(str)

if (this.method === 'GET') {

if ( sha === signature) {

this.body = echostr + ''

}

else {

this.body = 'wrong'

}

} else if (this.method === 'POST') {

if ( sha !== signature) {

this.body = 'wrong'

return false

}

var data = yield getRawBody(this.req, {

length: this.length,

limit: '1mb',

encoding: this.charset

})

// console.log(data.toString())

var content = yield util.parseXMLAsync(data)

content = util.formatMessage(content.xml)

console.log(content)

this.weixin = content

yield handler.call(this, next)

wechat.reply.call(this)

}

}


0 回复 有任何疑惑可以回复我~
Scott 2016-08-26 09:48:38

把相关代码贴一下,检查下有没有给 this.body 赋值,有没有比对加密的参数

0 回复 有任何疑惑可以回复我~
  • 提问者 慕田峪1594825 #1
    贴出来了, 麻烦给看一下, 感谢!
    回复 有任何疑惑可以回复我~ 2016-08-26 10:03:48
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号