MVC C#重定向到另一个控制器
我在从一个控制器重定向到另一个控制器时遇到问题,我的ASP.NE MVC应用程序在登录页面上启动,然后在用户成功登录时移动到otp页面(登录和otp操作在同一个控制器中) 成功提交OTP后,应用程序必须继续进入菜单页面,但会重定向回登录页面MVC C#重定向到另一个控制器,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我在从一个控制器重定向到另一个控制器时遇到问题,我的ASP.NE MVC应用程序在登录页面上启动,然后在用户成功登录时移动到otp页面(登录和otp操作在同一个控制器中) 成功提交OTP后,应用程序必须继续进入菜单页面,但会重定向回登录页面 AuthenticateController:登录操作 // POST: /Authenticate/Login [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public ActionResu
AuthenticateController
:登录操作
// POST: /Authenticate/Login
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(ViewModel_Login model)
{
// do login validation
if (loggedin)
{
return View("OTPAuthentication");
}
else
{
return View(model);
}
}
AuthenticateController
:OTPAuthentication操作
// POST: /Authenticate/OTPAuthentication
[HttpPost]
[AuthorizeUser]
[ValidateAntiForgeryToken]
public ActionResult OTPAuthentication(ViewModel_OTP model)
{
if (ModelState.IsValid)
{
// do OTP validation
return this.RedirectToAction("MainMenu", "Options");
}
else
{
ModelState.AddModelError("", "The one time pin provided is incorrect.");
}
return View(model);
}
选项控制器
:主菜单操作
// GET: /Options/MainMenu
[AuthorizeUser]
public ActionResult MainMenu()
{
return View();
}
RouteConfig
:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Authenticate", action = "Login", id = UrlParameter.Optional });
routes.MapRoute(
name: "Menu",
url: "Menu",
defaults: new { controller = "Options", action = "MainMenu" });
routes.MapRoute(
name: "Login",
url: "Login",
defaults: new { controller = "Authenticate", action = "Login" });
routes.MapRoute(
name: "OTP",
url: "OTP",
defaults: new { controller = "Authenticate", action = "OTPAuthentication" });
如果您使用的是表单身份验证,则在将用户重定向到主菜单控制器之前,必须执行类似操作
if (ModelState.IsValid)
{
string userName = "user123";
FormsAuthentication.SetAuthCookie(userName , True)
// do OTP validation
return this.RedirectToAction("MainMenu", "Options");
}
else
....
谢谢你的帮助 我发现了我的问题。因为我使用自己的登录服务,我不得不重新编写
AuthorizeAttribute
,在一些自定义AuthorizeAttribute教程中,他们说我应该包括以下内容:
var isAuthorized = base.AuthorizeCore(httpContext);
if (!isAuthorized)
{
return false;
}
// do try/catch that validate the session and the session security
所以我所要做的就是删除这段代码。什么是
main菜单的默认视图
action?是否已指定?主菜单仅包含3个到第三个控制器的链接按钮