2016-10-04 23 views
1

User.IsInRole()の作業を取得できません。ASPNET MVC 4:User.IsInRole()は常にfalseを返します

[HttpPost] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public ActionResult Login(LoginModel model, string returnUrl) 
    { 
     if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe)) 
     { 
      string roleUser; 

      if (User.IsInRole("Administrateurs")) 
      { 
       roleUser = "Administrateurs"; 
      } 
      else if (User.IsInRole("Conseillers")) 
      { 
       roleUser = "Conseillers"; 
      } 
      else if (User.IsInRole("Demandeurs")) 
      { 
       roleUser = "Demandeurs"; 
      } 
      else 
      { 
       roleUser = "Erreur!"; 
      } 

      return (null); 
     } 

私のwebconfigはうまく見えます。

は、私は以下のとおり元AccountControllerをカスタマイズして登録するか、ユーザーを作成して割り当てる役割ときときに、すべては大丈夫そうです:私は私のSQLテーブルに結果を見ることができます

[HttpPost] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public ActionResult Register(RegisterModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      bool erreur = false; 

      // Attempt to register the user 
      try 
      { 
       //************* Création du nouveau compte ******************** 
       WebSecurity.CreateUserAndAccount(model.UserName, model.Password); 
       //WebSecurity.Login(model.UserName, model.Password); 
      } 
      catch (MembershipCreateUserException e) 
      { 
       erreur = true; 
       ModelState.AddModelError("", ErrorCodeToString(e.StatusCode)); 
      } 
      finally 
      { 
       //************* S'assurer que l'utilisateur a été créé ***************** 
       if (erreur == false) 
       { 
        try 
        { 
         //***************** Association du nouveau compte d'utilisateur avec le rôle ************* 
         RoleAddToUser(model.NomRole, model.UserName); 
         //***************** Association du nouveau compte d'utilisateur avec le demandeur/conseiller ************* 
         var i = db.spGetUsrID(model.UserName).ToArray(); 
         Conseillers_Demandeurs_Utilisateurs lienUtilDdeur_Cons = new Conseillers_Demandeurs_Utilisateurs() 
         { 
          UserId = (int)i[0], 
          Code_Demandeur_Conseiller = model.NomPersonne, 
          Actif_Inactif = true, 
          Dte_Saisie = DateTime.Now, 
          UserId1 = 1 //******************* UserId = loanDdeur.UserId; 
         }; 
         db.Conseillers_Demandeurs_Utilisateurs.Add(lienUtilDdeur_Cons); 
         db.SaveChanges();        
        } 
        catch (Exception e) 
        { 
         throw e; 
        } 
       } 
      } 
      return RedirectToAction("Account", "Register"); 
     } 
     // If we got this far, something failed, redisplay form 
     return View(model); 
    } 

/// <summary> 
    /// Add role to the user 
    /// </summary> 
    /// <param name="RoleName"></param> 
    /// <param name="UserName"></param> 
    /// <returns></returns> 
    [Authorize(Roles = "Administrateurs")] 
    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult RoleAddToUser(string RoleName, string UserName) 
    { 
     string mag; 
     if (Roles.IsUserInRole(UserName, RoleName)) 
     { 
      //ViewBag.ResultMessage = "This user already has the role specified !"; 
      mag = "This user already has the role specified !"; 
     } 
     else 
     { 
      Roles.AddUserToRole(UserName, RoleName); 
      //ViewBag.ResultMessage = "Username added to the role succesfully !"; 
      mag = "Username added to the role succesfully !"; 
     } 

     //SelectList list = new SelectList(Roles.GetAllRoles()); 
     //ViewBag.Roles = list; 
     return Json(mag, JsonRequestBehavior.AllowGet); 
     //return View(); 
    } 

一部の検索では、私は最終的に使用します: Roles.GetRolesForUser(model.UserName) または Roles.IsUserInRole(model.UserName, "Administrateurs")

これらの作業は、私もUser.IsInRole()を読んで、Microsoftが推奨する唯一の正しい方法でした。

誰でもアイデアはありますか?

答えて

0

Asp.Net Identityフレームワークではなく、SimpleMembershipProviderを使用しています。 User.IsInRole()はIdentityとうまく機能しますが、SimpleMembershipProviderで動作するかどうかはわかりません。

私はあなたのために働く方法に固執しなければならないと恐れている:Roles.IsUserInRole。あなたがアイデンティティ・フレームワークへの更新を空想的にしていない限り(これにはいくつかの努力が必要です)。

関連する問題