在 ASP.NET MVC3 Web 应用程序中,整个控制器都有一个[Authorize]
附加属性。因此,如果用户未登录或会话过期,他们将被重定向到登录页面。这是工作......有时。下面“作品”列表中的 URL 正确重定向到登录页面;“不起作用”列表中的 URL 改为显示 IIS 401 错误屏幕 - 它们不会重定向到登录页面。
作品
- http://xyz/MyController/MyAction
- http://xyz/MyController/MyAction/123
- http://xyz/MyController/MyAction/123?X=Y
不工作
该MyAction
动作的模型public string ReturnUrl { get; set; }
在其基类中有一个。它还具有其他属性,但将这些属性添加到查询字符串不会影响登录重定向。它似乎只是 ReturnUrl 参数。
我不确定还有什么要调查的。任何想法为什么ReturnUrl
参数会造成麻烦?
路线
routes.MapRoute("Default-Title-ID", "{Controller}/{Action}/{Title}_{ID}", namespaces);
routes.MapRoute("Default-ID", "{Controller}/{Action}/{ID}", namespaces);
routes.MapRoute("Default", "{Controller}/{Action}", new { Controller = "Home", Action = "Index" }, namespaces);
routes.MapPageRoute("Reports-View", "ViewReport_{ID}", "~/Views/Reports/View.aspx");
工作示例(嗯,不工作,但说明了问题。)
在此处下载解决方案:https ://docs.google.com/file/d/0B4o6vqgNLpvbeVo4bVdKZWFMcEE/edit?usp=sharing
然后尝试访问:
- http://your.local.host/Test/TestMe?ReturnUrl= - 您不会被重定向到登录页面。
- http://your.local.host/Test/TestMe - 您将被重定向到登录页面。