在SimpleMemberShip中获取名称

时间:2014-08-04 16:26:55

标签: asp.net-mvc-4

我使用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");
        }
     }
 }

但不是结果或观点。

1 个答案:

答案 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);
    }

使用此代码从控制器自定义我自己的视图。

问候

感谢您的耐心等待。