我使用SimpleMemberShip在MVC 4中创建了一个应用程序,它有四个角色:
管理员
顾问 标准 新
我需要获取用户登录的配置文件的名称角色,以便提供适当的功能。
我试过了:
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
{
if (User.IsInRole("Admnistrador"))
{
return RedirectToAction("Administrador", "Usuario");
}
if (User.IsInRole("Nuevo"))
{
return RedirectToAction("Nuevo", "Usuario");
}
}
}
和其他这个
public ActionResult Login(LoginModel model, string returnUrl)
{
var perfil = from u in _DB.usuario
where u.UserName == "marios"
select u.perfil;
if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
{
if (perfil.Equals("Admnistrador"))
{
return RedirectToAction("Index", "Usuario");
}
if (perfil.Equals("Nuevo"))
{
return RedirectToAction("Details", "Usuario");
}
}
}
但不是结果或观点。
答案 0 :(得分:0)
我自动回复我。
我发现这个帖子。
Implement secure ASP.NET MVC applications
现在,我的新代码:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl )
{
if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe) )
{
if (Roles.IsUserInRole(model.UserName, "Administrador"))
{
return RedirectToAction("Index", "Usuario");
}
if (Roles.IsUserInRole(model.UserName, "Nuevo"))
{
return RedirectToAction("About", "Home");
}
}
// Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario
ModelState.AddModelError("", "El nombre de usuario o la contraseña especificados son incorrectos.");
return View(model);
}
使用此代码从控制器自定义我自己的视图。
问候
感谢您的耐心等待。