在我的Asp.net项目中有几个模块和几个用户角色。我想做的是,如果用户登录到系统,它重定向到user dashboard, admin重定向到admin dashboard。我使用Asp.net Identity进行登录和注册。
您可以尝试在sign in action中检查角色。为不同的角色设置不同的returnUrls。下面是示例代码:
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();