0

Я пытаюсь создать другое перенаправление в моем Входе Действия Результата в том смысле, что если пользователь входит в системе и находится в ролях перенаправлять на определенный взглядполучить текущую роль пользователя и перенаправить к конкретным действиям

Э.Г. Если регистратор регистрируется в режиме перенаправления на «RedirectToAction» («Индекс», «Бронирование»);

Я пробовал логику, но это не сработало ... вот что я сделал.

private ActionResult RedirectToLocal(string returnUrl) 
    { 
     if (User.IsInRole("Doctor")) 
     { 
      if (Url.IsLocalUrl(returnUrl)) 
      { 
       return Redirect(returnUrl); 
      } 
      else 
      { 
       return RedirectToAction("Index", "Patient"); 
      } 
     } 

     if (User.IsInRole("Receptionist")) 
     { 
      if (Url.IsLocalUrl(returnUrl)) 
      { 
       return Redirect(returnUrl); 
      } 
      else 
      { 
       return RedirectToAction("PatientBooking", "BooKing"); 
      } 
     } 

     if (Url.IsLocalUrl(returnUrl)) 
     { 
      return Redirect(returnUrl); 
     } 
     else 
     { 
      return RedirectToAction("GeneralSearch", "Search"); 
     } 
    } 

EDIT Ниже, как я звоню метод в Логин ActionResult

public async Task<ActionResult> Login(LoginModel model, string returnUrl) 
    { 
     if (ModelState.IsValid) 
     { 
      var loginbusiness = new LoginBusiness(); 
      var result = await loginbusiness.LogUserIn(model, AuthenticationManager); 

      if (result) 
      { 
       return RedirectToLocal(returnUrl); 
      } 

      else 
      { 
       ModelState.AddModelError("", "Invalid username or password."); 
      } 
     } 

     return View(model); 
    } 

Но это не работает для меня какие-нибудь идеи для этого ???

+0

есть ли у вас какие-либо ошибки? – ElenaDBA

+0

Он не проходит процесс проверки, он просто перенаправляет на возвращаемый RedirectToAction («GeneralSearch», «Поиск»); метод @ElenaDBA –

+0

Я думаю, что проблема в вашей условной логике – ElenaDBA

ответ

0

попробовать это

private ActionResult RedirectToLocal(string returnUrl) 
{ 
    if (User.IsInRole("Doctor")) 
    { 
     if (Url.IsLocalUrl(returnUrl)) 
     { 
      return Redirect(returnUrl); 
     } 
     else 
     { 
      return RedirectToAction("Index", "Patient"); 
     } 
    } 

    else if (User.IsInRole("Receptionist")) 
    { 
     if (Url.IsLocalUrl(returnUrl)) 
     { 
      return Redirect(returnUrl); 
     } 
     else 
     { 
      return RedirectToAction("PatientBooking", "BooKing"); 
     } 
    } 
else 
{ 
    if (Url.IsLocalUrl(returnUrl)) 
    { 
     return Redirect(returnUrl); 
    } 
    else 
    { 
     return RedirectToAction("GeneralSearch", "Search"); 
    } 
} 
} 
+0

Хорошо, давайте попробуем эту логику сейчас @ElenaDBA –

+0

Это все равно дает то же самое ... @ElenaDBA –

+0

Очевидно, что роль пользователя не является ни «доктором», ни «ресепшн». Вы пытались отлаживать, чтобы узнать, что это такое? Это может быть так же просто, как обложка письма – ElenaDBA

0

После долгих исследований я получил логику, которая работает просто отлично ...

var context = new DataContext(); 

      var userStore = new UserStore<ApplicationUser>(context); 
      var userManager = new UserManager<ApplicationUser>(userStore); 
      if (result) 
      { 
       var user = userManager.FindByName(model.UserName); 

       if (userManager.IsInRole(user.Id, "Receptionist")) 
       { 
        if (Url.IsLocalUrl(returnUrl)) 
        { 
         return Redirect(returnUrl); 
        } 
        else 
        { 
         return RedirectToAction("PatientBooking", "BooKing"); 
        } 

       } 
      } 

Это работает !!!

+0

рад, что вы получили его! – ElenaDBA

+0

:) Я знаю, что я, должно быть, дал тебе головную боль ... не был предназначен @ElenaDBA –

+0

lol это не так просто – ElenaDBA

Смежные вопросы