2016-03-04 2 views
3

У меня возникают проблемы с перенаправлением с одного контроллера на другой, мое приложение ASP.NE MVC запускается на странице входа в систему, а затем переходит на страницу otp, когда пользователь успешно выполнил вход (LOGIN и OTP действия находятся в одном контроллере).MVC C# Перенаправление на другой контроллер

Когда OTP был успешно отправлен, приложение должно перейти на страницу меню, но вместо этого оно перенаправляется обратно на страницу входа в систему.

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); 
} 

OptionsController: MainMenu действие

// 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" }); 
+0

Что такое просмотр в режиме MainMenu по умолчанию? это указано? – Imad

+0

MainMenu содержит только 3 кнопки ссылки на третий контроллер – ArnoDT

ответ

2

Если вы используете формы аутентификации, то вы должны сделать что-то вроде этого перед перенаправлением пользователя на контроллер MainMenu.

if (ModelState.IsValid) 
    { 
     string userName = "user123"; 
     FormsAuthentication.SetAuthCookie(userName , True) 
     // do OTP validation 
     return this.RedirectToAction("MainMenu", "Options"); 
    } 
    else 
    .... 
0

Благодарим за помощь.

Я нашел свою проблему. Потому что я использую свои собственные службы входа мне пришлось над Райтом в AuthorizeAttribute и на некоторых пользовательских Авторизоваться атрибуты урока они сказали, что я должен включать в себя следующее:

var isAuthorized = base.AuthorizeCore(httpContext); 
if (!isAuthorized) 
{ 
    return false; 
} 
// do try/catch that validate the session and the session security 

так все, что я должен был сделать, чтобы удалить этот кусок кода.