c# – 使用HttpCookie进行超时/ url到期
我正在使用一个Web应用程序,它是MVC 5 Angular JS混合. Web应用程序中没有身份验证,匿名用户可以来询问某些服务的价格.为了获得价格,用户需要回答几页中的一些问题.这是app的流程.
>用户点击按钮获取价格 目前,如果用户已经为URI添加了书签,他可以在几天之后返回,并从他离开的地方继续.我想阻止这种行为. 我在MVC中有哪些不同的选择?我可以想到以下几点: >使用带有过期时间的HttpCookie 我想避免HttpSession.我倾向于使用HttpCookie,因为它看起来是最简单的选择. >如果我们选择HttpCookie选项,是否有任何副作用需要记住? 解决方法
如果您希望在没有存储的情况下使某些链接过期,并且您的服务需要缩放,我认为您只需在链接中添加过期日期并签名即可.
我相信你可以用这样的方式创建你的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]是什么),否则它被客户端修改. 现在,您可以将任何非机密数据存储在用户链接中,允许用户共享此链接以及您可以使用链接执行的其他重要操作,而无需担心有人修改我们的链接.如果广泛知道的序列化算法如JSON,客户端也可以反序列化第一部分. 我认为这个流程将带来更好的用户体验,以防突然关闭浏览器(将在您的情况下清理cookie)并与他人共享链接(如果您需要) 希望这会有所帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |