jro*_*rob 4 authentication asp.net-mvc login roles asp.net-mvc-2
我有两种类型的角色[Admin,HelpDeskAdmin].
我有一个登录视图(两个用户都转到相同的登录链接),我想在登录后检查他们的角色,并在经过身份验证后重定向到各自的管理页面.下面的代码不会将登录用户标识为第一次处于角色中并重新加载登录页面,第二次登录时它会正确地重定向.
这是否与第一次检查时没有到位的身份验证cookie有关?我怎么能完成这个场景?
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (MembershipService.ValidateUser(model.UserName, model.Password))
{
FormsService.SignIn(model.UserName, model.RememberMe);
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
if (Roles.IsUserInRole("Admin"))
{
//go to admin landing page
return RedirectToAction("Index", "Manage");
}
else if (Roles.IsUserInRole("HelpDesk"))
{
//go to helpdesk landing page
return RedirectToAction("Index", "Interview");
}
else /******FIRST TIME THROUGH IT ALWAYS GOES HERE *******/
return RedirectToAction("Index", "Home"); //not in any of those roles
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
在处理下一个请求并设置了身份验证Cookie之前,用户在技术上不会登录....
可以在另一个Action方法中执行重定向逻辑,也可以使用此Action中的Roles.IsUserInRole(model.UserName, "Admin")[[注意指定用户名 ]] 提取用户信息.
| 归档时间: |
|
| 查看次数: |
2482 次 |
| 最近记录: |