这是一个难以解释的问题。
让我来形容一个场景。
我希望它能说明我在寻找什么。
我尝试过几个可能的解决方案:
我并不完全相信上述解决方案。我希望能够以系统的方式获得一些最佳实践,并以优雅的方式解决问题。
请帮助我提供有关我正在使用的现有解决方案的建议,以及您是否有一些出色的工作解决方案。请分享。
全部谢谢。
仅供参考。我正在使用ASP.NET MVC 4进行开发。
答案 0 :(得分:0)
使用history.js来控制history.back()事件。您只需将最后一页的状态替换为指向仪表板或所需页面(在您的Web应用程序内;出于安全原因,禁止跨域)。当用户单击后退按钮时,将加载定义的页面而不是登录页面。
https://github.com/browserstate/History.js/
代理解决方案对于这种UI交互来说太复杂了。客户端控制是解决方案的最佳方法。 HTML5参考为其定义了History API(http://www.w3.org/TR/html5/history.html)。不幸的是,现在并非所有的浏览器都能实现它那是因为history.js脚本存在。
答案 1 :(得分:0)
在寄存器和登录页面的Controller / Action方法中,检查用户是否已登录并重定向到例如。仪表板。
这样的事情取决于您的身份验证方式。
public ActionResult Register()
{
//If already logged in no need to show register page again
if(Request.IsAuthenticated)
return Redirec("Dashboard");
return View();
}
编辑:更新了修复评论问题的答案
我创建了一个包含以下内容的部分视图
<input type="hidden" id="reloader" value="" />
<script type="text/javascript">
if (document.getElementById("reloader").value === "reload")
window.location.reload();
else
document.getElementById("reloader").value = "reload"
</script>
然后,您可以在注册和登录视图中包含@Html.Partial('PartailViewName')
。
由于在使用后退按钮时缓存了DOM,如果用户使用后退按钮,上面的脚本将重新加载页面。
如果与我的第一个答案一起使用,您将获得所需的行为。