Как перенаправить на конкретное действие в области администратора по asp.net core mvc? - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть страница входа в систему, и я хочу перенаправить каждого пользователя к определенному действию области администратора.Я нашел много ссылок о том, как перенаправить на конкретное действие.Например, я пробовал эти методы RedirectToPage, RedirectToAction, RedirectToRoute, но все эти методы не работали для меня.

Вы можете увидеть, в чем заключается моя проблема, когда я использовалэтот метод.

 return RedirectToAction("Index", "Dashboard",new { area = "Admin"});

enter image description here

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null){
   ViewData["ReturnUrl"] = returnUrl;
   if (!ModelState.IsValid){
      return View(model);
   } else {
     var result = await _signInManager.PasswordSignInAsync(model.UserName,model.Password, model.RememberMe, lockoutOnFailure: false);
     var user = await _userManager.GetUserAsync(HttpContext.User);
     if (result.Succeeded){
        if (user != null){
           ApplicationUser appUser = new ApplicationUser(){
              Id = user.Id,
              Name = user.Name,
              UserName = user.UserName,
              Email = user.Email,
             LastName = user.LastName,
           };
           var userRole = await _userManager.GetRolesAsync(appUser);
           if (userRole != null){
              if (string.IsNullOrEmpty(returnUrl)){
                 if (_userManager.IsInRoleAsync(appUser, "مدیر کل").Result){
                    return RedirectToAction("Index", "Dashboard",new { area = "Admin"});
                    // return RedirectToPage("/Dashboard", new { area = "Admin" });
                    //return RedirectToPage("/Admin/Views/Dashboard/Index.cshtml");
                 }
              }
           }
        }
     }
   return View(model);
   }
}

app.UseMvc(routes =>{
    routes.MapRoute(
        name: "areas",
        template: "{area:exists}/{controller=Dashboard}/{action=Index}/{id?}"
    );
});

app.UseMvc(routes =>{
    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}"
    );
});

[Area("Admin")]
[Authorize(Roles = "مدیر")]
public class DashboardController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}
...