赞
踩
作用:防止攻击,避免其他人随意的调用接口,以保证数据的安全性。
在使用token前,首先了解下缓存的使用,比如(memcache/redis)等,在配置好memcache或者redis缓存后,下面就开始代码讲解
首先要生成token将token存入缓存中设置缓存时间 ,然后将token返回给小程序的前端 ,前端获取token后 验证,验证后将token通过headers传到后台,后台接收前台传过来的值,并在每个接口中加入token验证代码,判断前端返回的token与缓存中的是否一致,如果存在则返回接口数据 ,如果不存在则不返回数据直接退出接口。
//通过code生成token code不可反复使用,只能使用一次
string url = "https://api.weixin.qq.com/sns/jscode2session?appid=wx0eac3f4a1fef6170&secret=90386e2451500b0ba8cc75613d294e83&js_code=" + code + "&grant_type=authorization_code";
string content = DoGet(url);
if (content.IndexOf("errcode") > 0)
{
WXuserinfo wx = new WXuserinfo();
wx.statusCode = 404;
userinfo.Add(wx);
return userinfo;
}
string openid = JObject.Parse(content)["openid"].ToString();
var uuidN = Guid.NewGuid().ToString("N");
string time = DateTime.Now.ToString();
//string token = Basic.MD5Encrypt32(uuidN + time);
string token = MD5Comm.Md5Hash(uuidN + time);
//获取到的用户openid,将token作为缓存的键存入缓存 设置缓存时间一天
api.cdchuandong.com.App_Start.Memcached.Add("APIUSERID_TOKEN_" + token, openid, DateTime.Now.AddDays(1));
CD.ChuanDong.Users.RemotingServer.Model.WXUsersInfo wxUsers = CD.ChuanDong.Users.BLL.WXUsers.GetWXUsersByOPenID(openid);
if (wxUsers != null)
{
//添加缓存
api.cdchuandong.com.App_Start.Memcached.Add("APIUSERID_TOKEN_USERID" + token, wxUsers.UsersID);
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。