ASP.Net 视重定向到路线,给重新定向环
-
04-07-2019 - |
题
这可能是一些简单的问题..我正在尝试重新定向后的用户,他们已经成功通过身份验证,或者返回他们回到登录网页。但成功的页面是一个不同的路线,和我不可能重定向到工作。
这里是我的路线Globals.asax:
routes.MapRoute( _
"Default", _
"{controller}/{action}/{id}", _
New With {.controller = "Login", .action = "Index", .id = ""} _
)
routes.MapRoute( _
"Stuff", _
"{controller}/{action}/{id}", _
New With {.controller = "Stuff", .action = "Index", .id = ""} _
)
我已经有了2控制器: LoginController.vb
和 StuffController.vb
.的 Views/Login/Index.aspx
文件包含一个简单的形式与代码:
<form method="post" action="/Login/Authenticate">
的 LoginController
包含下列代码:
Function Authenticate() As RedirectToRouteResult
' authentication code commented out ;o)
Return RedirectToRoute("Stuff")
End Function
和StuffController包含以下内容:
Function Index()
' show stuff..
Return View() ' return /Views/Stuff/Index.aspx
End Function
这里就是我已经尝试迄今为止:
- Function Authenticate()
- Function Authenticate()作为ActionResult()
- Function Authenticate()作为RedirectToRouteResult()
所有这些导致向环超时在浏览器。什么我错过了?!
解决方案
它可能是你的东西的路线已经完全相同的形式作为默认的,所以当你呼叫
Return RedirectToRoute("Stuff");
得到的网址具有的形式:{控制器}/{行动}/{id},例如登录/再次进行身份验证,因为你是登录内部控制的认证行动。
尝试
RedirectToAction("Index", "Stuff");
希望这有所帮助。
其他提示
正确的答案是好的,但是:
- 什么如果你想改变的控制器/操作名称从工作人员/指数是其他什么东西?
-然后你会需要改变价值观,不仅在全球性的。asax,而且在所有地方,你使用的技术。
我的建议:
return RedirectToRoute("Stuff", (RouteTable.Routes["Stuff"] as Route).Defaults);
现在,在这种情况下,你不通的名字控制器/操作这东西/索引。这会让你管理的改变很容易。
我看不到你在哪里设定的身份验证cookie或标记的用户作为具有经认证以任何方式。是代码,你没有?
尝试
routes.MapRoute( _
"Stuff", _
"",_
New With {.controller = "Stuff", .action = "Index", .id = ""} _
)
不隶属于 StackOverflow