столкнулся с проблемой при изменении маршрута по умолчанию на Global.asax - PullRequest
0 голосов
/ 21 июня 2020

Я использую MVC5 и хочу изменить маршрут по умолчанию на основе значения, полученного из БД. Вот фрагмент кода, который я добавил в session_start в gloabl.asax.

 protected async void Session_Start(object sender, EventArgs e)
    {
        if (Session["User"] == null)
        {
            IRepository _repository = new Repository();

            var currentUser = await _repository.GetCurrentUser(Path.GetFileName(Context.User.Identity.Name.ToUpper()));

            if (currentUser != null)
            {
                Session["User"] = currentUser;
                var roles = await _repository.GetUserRoles();
                var userRoleDetails = roles.Where(r => r.ROLE_ID == currentUser.ROLE_ID).FirstOrDefault();
               
                if (!userRoleDetails.HasAccess_Home)
                {
                    if (userAccessDetails.HasAccess_UserDetails) {
                        Response.RedirectToRoute(
                                   new RouteValueDictionary {
                                { "Controller", "User" },
                                { "Action", "Details" }});

                    }
                    else (userAccessDetails.HasAccess_Reports)
                    {
                        Response.RedirectToRoute(
                                   new RouteValueDictionary {
                                { "Controller", "Reports" },
                                { "Action", "Report" }});

                    }
                   
                }
                

            }
            else
            {
                Response.RedirectToRoute(
                                    new RouteValueDictionary {
                                { "Controller", "Error" },
                                { "Action", "PermissionError" }});
            }
        }
    }

Вот маршрут по умолчанию

public static void RegisterRoutes(RouteCollection routes)
        {
            
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }

Пожалуйста, дайте мне знать, как я могу перенаправить на другую страницу на основе при значениях прав доступа из Db. Когда я пытаюсь использовать приведенный выше фрагмент кода, он каждый раз перенаправляется на домашнюю страницу. Как мы можем переопределить маршрут по умолчанию и перейти к маршруту, определенному в методе session_start.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...