Как перенаправить из области идентификации на администратора в ASP.NET CORE 2 - PullRequest
0 голосов
/ 26 ноября 2018

Я не могу перенаправить из Области Идентификации:

if (role=="Admin")
                {

                    return RedirectToAction("Index","Home",new { Area=Input.Role ,id=9});
                }

На главную страницу Администратора области, Action-Index. Всегда перенаправлять меня на Индекс в Области Идентификации;

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Проверьте свои проблемы ниже по одному:

  • Я получил ошибку A method 'CakeStore.App.Areas.Admin.Controllers.HomeController.Index (CakeStore.App)' must not define attribute routed actions and non attribute routed actions at the same time, вы не должны определять [HttpGet(Name ="AdminPanel")] и [Route(nameof(Admin) + "/[controller]")] одновременно.

    //[HttpGet(Name ="AdminPanel")]
    [Area(nameof(Admin))]
    [Route(nameof(Admin) + "/[controller]")]
    public IActionResult Index()
    {
        return View();
    }
    
  • Для var role = this.roleManage.GetUrl(Input.Username); она получит роль по имени пользователя, проверит, получила ли вы ожидаемую роль Admin.

  • return RedirectToAction("Index","Home",new { Area=Input.Role ,id=9});, вы не определили id в Индексе, нет необходимости добавлять id маршрут.

0 голосов
/ 26 ноября 2018

глядя на ваш код Я все еще ломаю голову над тем, почему кто-то будет указывать Роль при входе в систему.Можете ли вы сформулировать причины этого?

Самый простой ответ - встроенный код в OnPostAsync();, который находится на

//this because of the routes you have in StartUp.cs
[Authorize(Roles ="Admin")]
[Area("admin")]
public class HomeController : Controller
{          

    public IActionResult Index()
    {
        return View();
    }
}

странице Login.cs ...

    public async Task<IActionResult> OnPostAsync(string returnUrl = null)
    {

        returnUrl = returnUrl ?? Url.Content("~/");            

        if (ModelState.IsValid)
        {
            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, set lockoutOnFailure: true
            var result = await _signInManager.PasswordSignInAsync(Input.Username, Input.Password, Input.RememberMe, lockoutOnFailure: true);

            if (result.Succeeded)
            {
                var user = await userManager.GetUserAsync(User); // Claims Principle

                if (await userManager.IsInRoleAsync(user, "Admin"))
                {
                   //SIMPLEST ANSWER since you using mixed environment with PAGES
                   return LocalRedirect("~/admin");
                }

                //TODO:
                _logger.LogInformation("User logged in.");
                return LocalRedirect(returnUrl);
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...