De l'utilisateur.IsInRole ne fonctionne pas

J'ai ASP.NET MVC 4 application. J'utilise Simple Fournisseur d'Appartenance permettant de cocher la case se souvenir de moi sous formulaire de connexion. Si coché, persitent cookie .ASPXAUTH est créé qui expire 100 jours à partir de la date d'ouverture de session. Et tout fonctionne bien, à part le menu principal de l'application.

Certaines parties du menu sont disponibles pour les utilisateurs admin seulement. J'utilise:

@if (User.IsInRole("Administrator")) { @Html.Partial("_MainMenuPartial") }

pour verrouiller le rendu pour l'utilisateur ordinaire. Cette approche fonctionne très bien juste après l'enregistrement dans le système. Quand je serais de retour après un certain temps et cookie persistant est utilisé pour authentifier moi, je ne reçois pas connecté, mais

@User.IsInRole("Administrator")

renvoie "False" donc je ne vois pas admin éléments de menu. Dans le même temps

@User.Identity.Name

renvoie bon nom de connexion et

@User.Identity.IsAuthenticated

renvoie la valeur "True", ce qui prouve que les cookies persistants fonctionne très bien. Pourquoi ne puis-je pas accéder à des rôles d'utilisateur, même si l'utilisateur est authentifié par le système alors?

  • Comment avez-vous fait de créer des rôles? Quand dois attribuer des rôles aux utilisateurs dans votre Registre ActionResult?
  • Oui, c'est la façon dont je le fais dans le Registre de l'action: les Rôles.AddUsersToRoles(new[] { modèle.UserName }, new[] { role }); Tandis que le rôle est une chaîne déterminé précédemment.
  • Un moyen plus sûr de faire est à votre InitialiseSimpleMembershipAttribute.cs de la classe: un peu moins de Websecurity.InitialiseDatabaseConnection utilisation if (!Roles.RoleExists("Admin")) Roles.CreateRole("Admin");. Avez-vous essayé d'utiliser la méthode surchargée je l'ai indiqué dans ma réponse.
  • La solution que j'ai trouvée à ce problème a été l'ajout d'un filtre dans le RegisterGlobalFilters méthode de la FilterConfig classe dans le App_Start dossier. Voir ce pour plus de détails: stackoverflow.com/questions/16215316/...
InformationsquelleAutor Bartosz | 2013-03-22