【问题标题】:How should I auto log someone away out of my site?我应该如何自动将某人从我的站点中注销?
【发布时间】: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


【解决方案1】:

标记您的每 30 秒请求怎么样?例如添加头部或任何指示请求由javascript触发的内容,因此不更新计时器/令牌?

来自用户的请求不会有这个标志,并保持计时器/令牌更新

例如,将一些参数附加到您的 ajax“获取”请求中,例如 "source=js"。在服务器端,如果Request["source"] == "js"

,则可以判断这是一个自动请求

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 2011-10-29
    • 2011-02-22
    • 2021-11-24
    • 2021-03-31
    • 1970-01-01
    相关资源
    最近更新 更多