重定向到在MVC4中中断了哈希标记(#)的原始URL

Max*_*Max 7 authentication asp.net-mvc-4 single-page-application

我正在使用AngularJS开发一个SPA应用程序,使用REST Web API,在一个非常小的ASP.NET MVC4层上.由于这里不重要的原因,我没有使用MVC4的默认帐户控制器.

基本上,我想在用户之间分享"任务".我的目标是能够通过电子邮件将特定"任务"实体的URL发送给任何用户.单击该URL应启动身份验证.身份验证成功后,我想显示真实的任务页面信息.

AngularJS使我的URL有#符号,或者显示任务"XYZ123"的页面的URL是:http://hostname.com/#/tasks/XYZ123

ASP.NET将对该URL的未授权访问重定向到:http: //hostname.com/Home/Login?ReturnUrl =%2f#/tasks/XYZ123

这没关系,但相关的控制器方法"切断"#的路径,所以在:

 public ActionResult Login(string returnUrl)
Run Code Online (Sandbox Code Playgroud)

'returnUrl'的值只是"/"

所以,我正在失去这条道路:我想建立一个具有原始网址的"Connect with Facebook"链接,例如:

http://hostname.com/Login/ExternalLogin?ReturnUrl=%2F#/tasks/XYZ123

但是我不能.

解决这个问题的正确方法是什么?

我可以考虑在没有#tag的情况下创建自己的重定向服务URL,但是这个解决方案意味着额外的工作,并且仅涵盖系统发送带有任务URL的消息的情况 - 人们仍然会尝试从中复制/粘贴位置URL浏览器.

谢谢你的任何提示.

马克斯

Jot*_*aBe 0

Request您可以使用(如.Url或)的属性.QueryString来获取原始 url(和 url 参数),而不是依赖于 returnUrl 参数的自动绑定。