Redirect login user or admin to specific page or view depending upon role in asp.net identity

1k Views Asked by At

There are several module in my Asp.net project and several user role also. I want to do is, if user login to the system, it redirected to User dashboard and admin to admin dashboard. i have used Asp.net Identity for Login and register.

1

There are 1 best solutions below

0
Yiyi You On

You can try to check role in sign in action.Set different returnUrls for different roles.Here is sample code:

if (ModelState.IsValid)
         {
                    var user = await UserManager.FindAsync(model.UserName, model.Password);
                    var returnUrl = "defaultUrl";
                    if (user != null)
                    {
                        if (UserManager.IsInRole(user.Id, "role1"))
                        {
                            returnUrl = "url1";
                        }
                        if (UserManager.IsInRole(user.Id, "role2"))
                        {
                            returnUrl = "url2";
                        }
                    }
                    var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: false);
                    if (result.Succeeded)
                    {
                        _logger.LogInformation("User logged in.");
                        return LocalRedirect(returnUrl);
                    }
                    else
                    {
                        ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                        
                    }
                   
         }
         return View();