Я использую 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.