【发布时间】:2023-04-08 20:45:02
【问题描述】:
所以我在 MVC4 中构建了一个网站,并且我有一系列服务,其中我已经构建了一个 dll,它包装了所有调用并自动将 xml 更改为指定的对象。因此,调用者不会收到 xml,而是会收到一个 CustomReturn 对象,该对象具有 ErrorCode、ErrorMessage、Token 和 Payload,其中的有效负载已经被翻译成一个 List 等。
现在,要对我们的后端服务进行 90% 的调用,需要一个令牌,并且在成功调用返回时,将返回一个新令牌。为了管理这个 Token,它存储在一个 cookie 中,每次调用都会传递,这样服务器会处理管理 Token 而不是让浏览器 javascript 来做。
所以我创建了一个位于我的控制器顶部的属性,它查找此 cookie、解密令牌并将其存储在自定义 HttpContext.Current.User 中。
最后,我的控制器功能基本上是这样的:
[HttpGet]
public T MyFunction(string venue)
{
var asr = Services.GetSomething(Token, venue);
SetAuthTicket(asr.Token);
return asr.Payload;
}
对于冗长的背景故事感到抱歉,但这是我的问题所在:
在我的页面上,我有一个功能可以根据用户请求获取和显示数据,然后每 30 秒自动更新相同的数据。
我希望在页面中实现自动注销功能,以检测用户在 x 时间内没有发出请求并将其注销...
最初我打算通过验证令牌来做到这一点,因为 x 次后它变得无效。
但目前自动更新使令牌保持有效,因为它们发出相同的调用来重置令牌...
问题
在我的网站中实施自动注销功能的最佳选择是什么?我应该创建一个不会重置令牌的调用的单独副本吗?还是我应该编写一些 javascript 来检测鼠标移动或点击之类的并以这种方式将它们注销?
【问题讨论】:
-
如何标记您的每 30 秒请求?例如添加头部或任何指示请求由javascript触发的内容,因此不更新计时器/令牌?来自用户的请求不会有这个标志,并保持计时器/令牌更新
-
你会建议我如何实现该标志?如果它不是我的函数签名中的附加参数,我会更喜欢,有没有一种方法可以向我可以查找的 ajax 调用添加一些东西,这表明不改变我当前的设置?
-
只需将一些参数附加到您的 ajax“get”请求中,例如“source=js”。在服务器端,你可以判断这是一个自动请求,如果它 Request["source"] == "js"
-
好的,谢谢,如果你能把你的评论变成一个答案,我很乐意接受它,因为这听起来是处理我的情况的好方法
-
是的,现在回答一下
标签: javascript c#-4.0 asp.net-mvc-4