Open Closed

how change redirect url after login in web project based in role? #9430


User avatar
0
devmahmod created

i have user in role ContentManager i want when user login redirect to ManagerRequests how to solve , I'm using mvc core razor


3 Answer(s)
  • User Avatar
    1
    maliming created
    Support Team Fullstack Developer

    hi

    You can add the redirect code in the Index page. This is easiest

    public ActionResult Index()
    {
        if (CurrentUser.IsAuthenticated && CurrentUser.Roles.Contains("ContentManager"))
        {
                return Redirect("~/ManagerRequests");
        }
        return Page();
    }
    

    You can also do it in the OnSignedIn method.

    context.Services.ConfigureApplicationCookie(options =>
    {
        var previousOnSignedIn = options.Events.OnSignedIn;
        options.Events.OnSignedIn = async cookieSignedInContext =>
        {
            await previousOnSignedIn(cookieSignedInContext);
    
            var currentUser = cookieSignedInContext.HttpContext.RequestServices.GetRequiredService<ICurrentUser>();
            if (currentUser.IsAuthenticated && currentUser.Roles.Contains("ContentManager"))
            {
                cookieSignedInContext.HttpContext.Response.Redirect("api/account/authenticator-info");
            }
        };
    });
    }
    
    
  • User Avatar
    0
    devmahmod created

    Thanks for you answer which worked for me first solution which in index page

    public class IndexModel : SCISPPageModel
    {
        public IActionResult OnGet()
        {
            if (!CurrentUser.IsAuthenticated)
            {
                return Page();
            }
            // Redirect based on role priority (Manager > Creator)
            var roleRedirectMap = new Dictionary<string, string>
            {
                { ApplicationRoles.ContentManager.ToString(), "~/ManagerRequests" },
                //{ ApplicationRoles.ContentCreator.ToString(), "~/CreatorRequests" }
            };
            foreach (var role in roleRedirectMap.Keys)
            {
                if (CurrentUser.Roles.Contains(role, StringComparer.OrdinalIgnoreCase))
                {
                    return Redirect(roleRedirectMap[role]);
                }
            }
            // If authenticated but no matching role
            return Page();
        }
    }
    
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    Great!

Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v9.3.0-preview. Updated on June 13, 2025, 11:37