【发布时间】:2017-10-19 02:15:18
【问题描述】:
我正在开发一个 Web 应用程序,它是 MVC 5 + Angular JS 的混合体。 Web 应用程序中没有无身份验证,匿名用户可以来询问某些服务的价格。为了获得价格,用户需要回答一些分散在几页上的问题。这是应用程序的流程。
用户点击按钮获取价格
生成请求并将用户重定向到问题页面的唯一 URI
用户回答问题,用户提交答案。这些问题分布在通过角度路由导航的多个页面上。答案会在页面导航时保存回服务器。
一旦用户提交答案,系统(服务器)就会生成价格并将其显示给用户。
目前,如果用户已将 URI 加入书签,他可以在几天后返回并从他离开的地方继续。我想阻止这种行为。
在 MVC 中有哪些不同的选项?我可以想到以下几点:
使用带有过期时间的
HttpCookie在数据库中保存上次访问时间并验证用户是否在规定的时间范围内到达?
我想避免HttpSession。我倾向于使用HttpCookie,因为它看起来是最简单的选择。
如果我们使用
HttpCookie选项,我需要记住任何副作用吗?我可以在 MVC 中寻找其他替代方案吗?
【问题讨论】:
-
由于您没有登录模块,您也可以选择localStorage,每次都会更新。
-
如果你不希望用户只从开始访问页面,你可以使用 sessionStorage。一旦用户关闭窗口/选项卡,sessionStorage 将被自动删除,您可以形成用户从头开始。
-
感谢大家的建议,对于我的场景,我想通过我的 MVC 应用程序/服务器来控制它。 localStorage/ sessionStorage 只是客户端。
-
为什么要避免
HttpSession?它可能比HttpCookie更适合这种情况。除非您希望用户能够在未来返回到某个点。 -
我的应用程序将托管在负载平衡环境中。对于
HttpSession,我可能不得不进行进程外会话管理。我想避免这种复杂性。另外,最近HttpSession好像不太受宠:brockallen.com/2012/04/07/think-twice-about-using-session-state
标签: c# asp.net angularjs asp.net-mvc session-cookies