Global.asax更改默认路由时遇到问题

时间:2020-06-21 04:54:50

标签: asp.net-mvc asp.net-mvc-5

我正在使用MVC5,并希望基于从数据库中检索到的值来更改默认路由。 这是我在gloabl.asax的session_start中添加的代码段。

 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方法中定义的路由。

0 个答案:

没有答案