问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

token无效怎么解决

发布网友 发布时间:2022-03-18 11:10

我来回答

3个回答

热心网友 时间:2022-03-18 12:39

1、新建TokenAction。

2、配置struts.xml文件,成功跳转至success.jsp. 重复的话跳转到 chongfu.jsp。

3、.新建token.jsp。

4、注意引入Struts2标签库,注意隐藏的token标签。

5、新建chongfu.jsp 重复提示。

6、访问token.jsp文件,输入姓名年龄,点击提交。

7、返回token.jsp页面,查看源代码.

热心网友 时间:2022-03-18 13:57

1、实现登录生成token的时候加入refresh标识的方法代码。

2、实现在权限验证环节对于access_token、refresh_token设置不同时间的期限。根据判断结果返回状态的方法代码。

3、实现根据反馈的状态执行不同的方法给返回失败的response的header中加入识别的key值的方法代码。

4、实现request方法中通过Catch捕获webException对象获取Key值获取新的token再次发起请求的方法代码。

5、返回给客户端请求结果以及新的token的方法代码。

热心网友 时间:2022-03-18 15:32

解决思路很简单:建立公共access token数据,有效期内不重新创建access_token。
解决方案:
1、微信类库:有效期内直接读取access token数据文件中的json数据,过期失效,重新获取并创建新的access token数据文件
2、数据文件:存放有效的access token数据,具体有:access_token.json和jsapi_ticket.json
核心代码如下:

Index: wxjsSDK.cs
===================================================================
--- wxjsSDK.cs(revision 0)
+++ wxjsSDK.cs(revision 1)
@@ -0,0 +1,209 @@
+using System;
+using System.Collections.Generic;
+using System.Web;
+using System.IO;
+using System.Security.Cryptography;
+using System.Runtime.Serialization.Json;
+using System.Runtime.Serialization;
+using System.Net;
+using System.Runtime.Serialization.Formatters.Binary;
+using System.Text;
+
+namespace JR.Common
+{
+ public class wxjsSDK
+ {
+ private string appId;
+ private string appSecret;
+
+
+ public wxjsSDK(string appId, string appSecret)
+ {
+ this.appId = appId;
+ this.appSecret = appSecret;
+ }
+
+
+
+ //得到数据包,返回使用页面
+ public System.Collections.Hashtable getSignPackage()
+ {
+ string jsapiTicket = getJsApiTicket();
+ string url = HttpContext.Current.Request.Url.ToString(); //"http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
+ string timestamp = Convert.ToString(ConvertDateTimeInt(DateTime.Now));
+ string nonceStr = createNonceStr();
+ // 这里参数的顺序要按照 key 值 ASCII 码升序排序
+ string rawstring = "jsapi_ticket=" + jsapiTicket + "&noncestr=" + nonceStr + "×tamp=" + timestamp + "&url=" + url + "";
+ string signature = SHA1_Hash(rawstring);
+ var signPackage = new System.Collections.Hashtable();
+ signPackage.Add("appId", appId);
+ signPackage.Add("nonceStr", nonceStr);
+ signPackage.Add("timestamp", timestamp);
+ signPackage.Add("url", url);
+ signPackage.Add("signature", signature);
+ signPackage.Add("rawString", rawstring);
+ return signPackage;
+ }
+
+
+ //创建随机字符串
+ private string createNonceStr()
+ {
+ int length = 16;
+ string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+ string str = "";
+ var rad = new Random();
+ for (int i = 0; i < length; i++)
+ {
+ str += chars.Substring(rad.Next(0, chars.Length - 1), 1);
+ }
+ return str;
+ }
+
+
+ //得到ticket 如果文件里时间 超时则重新获取
+ private string getJsApiTicket()
+ {
+ string ticket = "";
+ // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例
+ string path = HttpContext.Current.Server.MapPath(@"/log/jssdk/jsapi_ticket.json");
+ if (!File.Exists(path))
+ {
+ File.Create(path).Close();
+ }
+ StreamReader sr = new StreamReader(path, System.Text.Encoding.Default);
+ string filecontent = sr.ReadToEnd();
+ CommonJsonModel jsonModel = null;
+ if (!string.IsNullOrEmpty(filecontent))
+ {
+ jsonModel = new CommonJsonModel(filecontent);
+ }
+ sr.Close();
+ sr.Dispose();
+ if (jsonModel == null || int.Parse(jsonModel.GetValue("expires_in")) < ConvertDateTimeInt(DateTime.Now))
+ {
+ string accessToken = getAccessToken();
+ string url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=" + accessToken;
+ jsonModel = new CommonJsonModel(httpGet(url));
+ ticket = jsonModel.GetValue("ticket");
+ if (ticket != "")
+ {
+ string json = "{\"ticket\":\"" + ticket + "\",\"expires_in\":" + (ConvertDateTimeInt(DateTime.Now) + 7000) + "}";
+ StreamWriterMetod(json, path);
+ }
+ }
+ else
+ {
+ ticket = jsonModel.GetValue("ticket");
+ }
+ return ticket;
+ }
+
+
+ //得到accesstoken 如果文件里时间 超时则重新获取
+ private string getAccessToken()
+ {
+ // access_token 应该全局存储与更新,以下代码以写入到文件中做示例
+ string access_token = "";
+ string path = HttpContext.Current.Server.MapPath(@"/log/jssdk/access_token.json");
+ if (!File.Exists(path))
+ {
+ File.Create(path).Close();
+ }
+ StreamReader sr = new StreamReader(path, System.Text.Encoding.Default);
+ string filecontent = sr.ReadToEnd();
+ CommonJsonModel jsonModel = null;
+ if (!string.IsNullOrEmpty(filecontent))
+ {
+ jsonModel = new CommonJsonModel(filecontent);
+ }
+ sr.Close();
+ sr.Dispose();
+ if (jsonModel == null || int.Parse(jsonModel.GetValue("expires_in")) < ConvertDateTimeInt(DateTime.Now))
+ {
+ string url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId +
+ "&secret=" + appSecret + "";
+ jsonModel = new CommonJsonModel(httpGet(url));
+ access_token = jsonModel.GetValue("access_token");
+ if (access_token != "")
+ {
+ string json = "{\"access_token\":\"" + access_token + "\",\"expires_in\":" + (ConvertDateTimeInt(DateTime.Now) + 7000) + "}";
+ StreamWriterMetod(json, path);
+ }
+ }
+ else
+ {
+ access_token = jsonModel.GetValue("access_token");
+ }
+ return access_token;
+ }
+
+
+ //发起一个http请球,返回值
+ private string httpGet(string url)
+ {
+ try
+ {
+ var MyWebClient = new WebClient();
+ MyWebClient.Credentials = CredentialCache.DefaultCredentials; //获取或设置用于向Internet资源的请求进行身份验证的网络凭据
+ Byte[] pageData = MyWebClient.DownloadData(url); //从指定网站下载数据
+ string pageHtml = System.Text.Encoding.Default.GetString(pageData);//如果获取网站页面采用的是GB2312,则使用这句
+ //string pageHtml = Encoding.UTF8.GetString(pageData); //如果获取网站页面采用的是UTF-8,则使用这句
+ return pageHtml;
+ }
+ catch (WebException webEx)
+ {
+ Console.WriteLine(webEx.Message.ToString());
+ return null;
+ }
+ }
+
+
+ //SHA1哈希加密算法
+ private string SHA1_Hash(string str_sha1_in)
+ {
+ SHA1 sha1 = new SHA1CryptoServiceProvider();
+ byte[] bytes_sha1_in = System.Text.UTF8Encoding.Default.GetBytes(str_sha1_in);
+ byte[] bytes_sha1_out = sha1.ComputeHash(bytes_sha1_in);
+ string str_sha1_out = BitConverter.ToString(bytes_sha1_out);
+ str_sha1_out = str_sha1_out.Replace("-", "").ToLower();
+ return str_sha1_out;
+ }
+
+
+ /// <summary>
+ /// StreamWriter写入文件方法
+ /// </summary>
+ private void StreamWriterMetod(string str, string patch)
+ {
+ FileStream stream = new FileStream(patch, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Delete | FileShare.ReadWrite);
+ StreamWriter writer = new StreamWriter(stream);
+ writer.WriteLine(str);
+ stream.Flush();
+ writer.Close();
+ stream.Close();
+ stream.Dispose();
+ writer.Dispose();
+ }
+
+
+
+
+ /// <summary>
+ /// 将c# DateTime时间格式转换为Unix时间戳格式
+ /// </summary>
+ /// <param name="time">时间</param>
+ /// <returns>double</returns>
+ private int ConvertDateTimeInt(System.DateTime time)
+ {
+ int intResult = 0;
+ System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
+ intResult = Convert.ToInt32((time - startTime).TotalSeconds);
+ return intResult;
+ }
+
+
+ }
+
+
+}

access_token.json
{"access_token":"4H14BVCUrAxxxxxxxxxxxxWeLu-zKETaBYqsoKFjsHZDc3xOwc-m43WDw2HjzxEkng2nC7iJuHydNt5PqRDY7HCoAU4lmuaPoYsIQHdW9kA","expire_time":1428599121}

access_token.json
{"jsapi_ticket":"bxLdikRXVbTPdHSM05e5u1wgoccccccccccccccccccccccccccccc11FFzYsiqbXZN0SDGN6Dnksnt2Q","expire_time":1428599122}
token无效时,可以怎么解决?

解决无效的token主要有以下方式:一、重新获取token 当token无效时,最常见且直接的解决方法是重新获取有效的token。这通常涉及重新登录或刷新身份验证信息。具体操作步骤如下:二、详细解释 1. 确认token无效的原因:token可能因为多种原因而失效,例如过期、被篡改或已使用等。首先,需要明确导致token无效的...

斑马智行出现无效的token是什么意思

4. 在处理“token无效”的问题时,需要用户重新进行认证或系统管理员重新分配有效的认证令牌。5. “token无效”这一表述,在技术层面上,指的是用于访问控制和保护服务的安全令牌不再被服务器接受。6. 如果斑马智行系统报告“token无效”,用户可能需要刷新令牌、重新登录或联系技术支持以解决问题。7. 在...

token无效啥意思

1. 当提示“token无效”时,通常指的是无法完成邮箱的绑定过程。2. 若遇到此类问题,可以尝试通过电脑访问爱奇艺官网来完成邮箱绑定。3. 在电脑上登录爱奇艺后,进入个人设置界面,便可进行邮箱绑定操作。4. 爱奇艺的标志设计理念是以“屏”作为核心,展现出多屏合一和网络视频的互动特性。5. 这个设计...

token验证一直失败的原因有哪些?

3. 网络问题: 网络连接不稳定或中断也可能导致Token验证失败。确保设备连接到稳定的网络,并尝试重新进行验证。4. 软件或系统问题: 某些情况下,软件本身的缺陷或与操作系统的不兼容可能导致验证失败。尝试更新软件版本或检查系统兼容性,可能有助于解决问题。当遇到“token”验证失败的情况时,首先应当检...

token异常啥意思?

解决Token无效的问题,可以采取以下步骤:1. 在登录生成Token时,加入refresh标识,以区分不同类型的Token。2. 在权限验证过程中,对access_token和refresh_token设置不同的有效期。3. 根据验证结果,返回相应的状态,并在失败的response header中包含识别的key值。4. 在request方法中,通过异常处理(Catch...

token失效是什么意思

并根据需要调整安全策略。对于关键服务或资源,可以考虑实施刷新Token机制,这样当主Token过期时,可以使用刷新Token来获取新的有效Token,而无需用户重新进行身份验证。总结来说,Token失效是网络安全和身份验证中的关键概念。了解其原因和采取相应的预防措施有助于确保用户的安全和系统的稳定运行。

爱奇艺token无效是什么意思?

先检查网络连接,然后尝试刷新页面或访问爱奇艺官网查看解决方案。6. 定期更换密码可以减少token无效的风险。7. 登录爱奇艺时,要注意账户安全,使用复杂密码并开启二步验证。8. 避免在公共网络或不安全的计算机上使用爱奇艺,以保护账户安全。9. 在安全的环境下使用爱奇艺,确保在线观看体验的可靠性。

渝快办无效的token怎么解决

2. 尝试重新获取token:用户可以重新登录或刷新页面,系统会重新生成一个新的token。3. 清除浏览器缓存:如果token问题依旧存在,用户可以尝试清除浏览器缓存或换用其他浏览器进行操作。4. 联系技术支持:如果以上方法都无法解决问题,用户应该联系渝快办的技术支持团队。5. 提供问题描述:用户在联系技术支持...

token错误什么意思

遇到Token错误,通常的解决方法包括:1. 重新获取Token:如果是用户操作不当或网络问题导致的Token错误,可以尝试重新获取最新的Token。2. 检查Token格式:确保使用的Token格式正确,符合服务器的要求。3. 联系系统管理员:如果是服务器内部处理Token的逻辑出现错误,需要联系系统管理员进行解决。

渝快办无效的token怎么解决

为了解决这些问题,可以采取以下措施:1. **重新获取token**:如果token过期或输入错误,用户需要重新登录系统,按照指引获取新的token,并确保新token的正确输入。2. **检查网络连接**:网络不稳定可能导致token获取失败。用户应检查自己的网络连接是否畅通,必要时尝试重启路由器或切换网络环境。3. **...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
两夫妻多久做一次爱算正常 蓝屏代码0x00000024 (0x001902FE,0xf78ceb74,0xf78ce870,0xf71fa... 蓝屏代码0x000000D1(0x0000000,0x0000002,0x0000000,0xF7EC73)怎么解决... pci简易通讯控制器感叹号有什么后果PCI简易通讯控制器出现黄色惊叹号怎 ... pci简易通讯控制器驱动感叹号 36岁可以报考人力资源证吗 山东三联集团有限责任公司简介 小红、小丽两人折纸星星,小红2分钟折了24个,小丽3分钟折了39个... 老人总是咳嗽都好几天了,有时嗓子有点痒。有什么奇效偏方吗?? 咳嗽很久了老是不好,有什么偏方止咳呢? access token有效期多少秒 泰州通公积金access+Token效验错误是什么意思 tp5小程序accesstoken失效 AccessToken获取失败是怎么回事 缺少access token什么意思 获取access token失败什么意思 苹果仿生芯片A10都有哪款机型? 2020最新款ipad型号是哪款 为什么没有a11处理器的ipad? ipad2018参数是怎样的? a10处理器的ipad2019运行iPados卡吗?有没有用过的朋友说下 现在的 iPad 买哪款比较好? ipad中A9和A10芯片有什么不同? a10+m10协处理器是哪个平板? ipad第七代适合升级ios15吗 为什么iPad7还是a10处理器? 平板a1893是A10处理器吗 苹果平板电脑的A10处理器是真的吗 A10处理器的平板性能怎么样 平板电脑A10与D10有什么不同? 金华人社accesstoken无线或已过期是什么意思 新浪微博关注时出现invalid_access_token是什么意思“? access-token-is-invalid-or-not-latest是什么意思 获取access_token失败 延长accesstoken失效时间是什么意思 accesstoken什么意思? access_token failed是什么意思? 苹果access token什么意思 付费问答社区的兴起有什么弊端? 为什么付费问答社区的兴起对知识传播利大于弊的? 付费问答社区所有的提问都要钱吗? 为什么付费问答不能体现呢? 三大知识付费平台是哪些类型? 2021年十大知识付费社群你知道几个? 付费问答社区的兴起对知识传播弊大于利吗? 五大知识付费平台有哪些? 付费知识问答社区的兴起对知识传播是否有利? 社会化问答网站的知名网站 付费知识问答平台有哪些? 知识付费平台有哪些?
  • 焦点

最新推荐

猜你喜欢

热门推荐