- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在开发一个 Web 应用程序,它是 MVC 5 + Angular JS 的混合体。 Web 应用程序中没有身份验证,匿名用户可以来询问某些服务的价格。要获得价格,用户需要回答分布在几页上的一些问题。这是应用程序的流程。
用户点击按钮获取价格
生成请求并将用户重定向到问题页面的唯一 URI
用户回答问题并提交答案。这些问题分布在通过 Angular 路由导航的多个页面上。答案会在页面导航时保存回服务器。
用户提交答案后,系统(服务器)生成价格并将其显示给用户。
目前,如果用户已将 URI 加入书签,他可以在几天后返回并从他离开的地方继续。我想阻止这种行为。
我在 MVC 中有哪些不同的选项?我可以想到以下内容:
使用带有过期时间的HttpCookie
在数据库中保存上次访问时间并验证用户是否在规定的时间范围内?
我想避免 HttpSession
。我倾向于使用 HttpCookie
,因为它看起来是最简单的选择。
如果我们使用 HttpCookie
选项,我需要记住任何副作用吗?
我可以寻找 MVC 中的任何其他替代方案吗?
最佳答案
如果您想在不涉及存储的情况下使某些链接过期并且您的服务需要扩展,我认为您只需在链接中添加过期日期并签名即可。
我相信你可以用这样的方式创建你的 URL
伪代码:
var info = [Payload any info you need to store(questionnaire id or so)] + [expirationDate]
var sign = HMAC256(info + [SERVER_SECRET])
var clientLinkParameter = info + sign
var clientLink = [baseURL] + [delimiter] + Base64(clientLinkParameter)
*HMAC256 - 这只是您可以使用您想要的任何算法创建签名的示例
现在您可以通过解析分隔符之前部分中的序列化数据来检查您的链接是否过期。您还可以通过检查来检查日期是否未被修改:
HMAC256([partBeforeDelimiter] + [SERVER_SECRET]) 和 [partAfterDelimiter]
相等。如果它们匹配,这就是您的服务器发送的链接(因为只有您的服务器知道 [SERVER_SECRET] 是什么)否则它会被客户端修改。
现在您可以在用户链接中存储任何非 secret 数据,允许用户共享此链接以及您可以使用链接做的其他很棒的事情,而不必担心有人修改我们的链接。如果客户端使用像 JSON 这样广为人知的序列化算法,那么客户端也可以反序列化第一部分。
我认为这个流程会在浏览器突然关闭的情况下带来更好的用户体验(在你的情况下会清除 cookie)并且还会与某人共享链接(如果你需要的话)
希望这会有所帮助。
关于c# - 使用 HttpCookie 超时/url 过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44061747/
一段时间以来,这一直是一个令人烦恼的问题,但非常零星且难以隔离。 有时,在 Web 应用程序上经过身份验证的浏览器已打开一段时间,已多次登录和退出同一 Web 应用程序,具有多个选项卡,几乎是任何浏览
HttpCookie 类文档: There are 3 HTTP cookie specifications: Netscape draft RFC 2109 - http://www.ietf.or
我从 HTTP 响应 header 中得到了一个 cookie 字符串,如下所示: name=value; path=/; domain=.g.cn; expire=... 我可以将上面的行解析为键值
我正在尝试从我的网站编写 cookie,并试图弄清楚时区对 HttpCookie.Expire 属性有什么影响。我应该路过DateTime.Now.AddDays(1)或 DateTime.UtcNo
我正在我的 ASP.NET 应用程序中创建一些 cookie。这些 cookie 在创建 10 分钟后就会过期。我遵循 MSDN 上描述的方法,如下所示: http://msdn.microsoft.
我在使用 HttpCookie 时遇到问题。 我正在构建一个电子商务,我正在尝试为我的网站设置 Cookie。 定义了三种 Cookie,如下所述: private static string coo
有没有办法为 HttpCookie 指定端口? 我在 sub.example.com 有一个站点,需要部署在 sub.example.com:81 和 sub.example.com:82。(所以同一
今天我将桌面上一直使用的 java 从 Oracle JDK 1.7 更改为 OpenJDK 1.7。 所以我从 java version "1.7.0_25" Java(TM) SE Runtime
如果将 cookie 的过期时间设置为 DateTime.Now.AddDays(-1),它什么时候过期?它显示到期日是昨天。这是代码: var rememberMeCookie = new Http
所以我很困惑,因为 msdn 和其他教程告诉我使用 HttpCookies 通过 Response.Cookies.Add(cookie) 添加 cookie。但这就是问题所在。 Response.C
我有一个基本的 SPA (react) API (net core 2.2) 设置,有 2 个环境:dev 和 prod(小项目)。 API 端有一个身份验证机制,用于检查每个包含 JWT 的请求中
我对如何制作普通版很感兴趣 HttpCookie对象放入 session 结束时过期的 cookie。我对某人不感兴趣 showing me HttpContext.Session .与普通 cook
我正在对我的用户进行身份验证,然后向他们每个人发送一个唯一的 cookie,我将存储该 cookie 到服务器端和客户端。为了向我的 API 提供一定程度的安全性,我使用该 cookie 将每个请求发
我在设置 cookie 时看到了一些奇怪的东西...... 行动: string cookieName = "foo"; string cookieValue = "bar"; //Set a coo
我正在开发一个 Web 应用程序,它是 MVC 5 + Angular JS 的混合体。 Web 应用程序中没有身份验证,匿名用户可以来询问某些服务的价格。要获得价格,用户需要回答分布在几页上的一些问
当我尝试访问 asp.net mvc 3 应用程序时,收到错误“元素“httpCookies”已被锁定在更高级别的配置中”。当我在 中添加下面的行时,就会发生这种情况部分。 这种情况发生在 Win
此代码仅记录 cookie 列表和每 1 秒哪个 cookie 已过期的 bool 值。 我使用 AVD 模拟器 API 23 运行此源代码。然后,HttpCookie.hasExpired() 仅返
我想在 ASP.NET 中使用 HttpCookie 而不是 Session。 当我在登录页面中设置 cookie 并将其重定向到下一页时,我遇到了问题。如果我尝试访问下一页中的 cookie,它会返
我正在尝试从 http cookie 中读取字符串序列化的 json 对象。字符串看起来像这样 "{\"status\": 400\054 \"code\": \"14040\"\054 \"link
意思是我创建了一个带有 .Name = "ChocolateChip"的 cookie,然后我会通过以下方式查找它:Response.Cookies["ChocolateChip"]...? 最佳答案
我是一名优秀的程序员,十分优秀!