所以我在MVC4中构建一个网站,我有一系列服务,我已经在其中构建了一个包含所有调用并自动将xml更改为指定对象的dll。因此,调用者不会接收xml,而是会收到一个CustomReturn对象,该对象具有ErrorCode,ErrorMessage,Token和Payload,其中有效负载已经被转换为List等。
现在,要对我们的后端服务进行90%的调用,需要令牌,并且在成功调用返回时,将返回新的令牌。为了管理这个令牌,它存储在一个cookie中,该cookie随每次调用一起传递,这样服务器就会处理管理令牌,而不是让浏览器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并以这种方式记录它们?
答案 0 :(得分:0)
你的每30秒请求标志怎么样?比如添加头部或其他什么来表明请求是由javascript触发的,因此不会更新定时器/令牌?
来自用户的请求不会有此标志,并保持更新计时器/令牌
示例,将一些参数附加到您的ajax“get”请求,例如"source=js"
。在服务器端,如果Request["source"] == "js"