J'aime la nouvelle simplemembership fonction MVC 4 internet modèle avec des liens à OAuth pour les connexions externes de VS 2012 RTM. Pour la plupart des fonctionnalités d'authentification sont de travail. Cependant, même après avoir passé plus de 8 heures sur ce, je suis incapable de mettre en œuvre basé sur les rôles d'autorisation de travaux sur mon contrôleurs. SimpleMembership s'avère être tout sauf simple.
J'ai cherché sur stackoverflow, googlé et avoir lu la dernière par Jean Galloway, essayé de nombreuses suggestions et n'ont toujours pas été en mesure de le cas resovle cette question. Tout a commencé avec Sql erreur de connexion et ne pouvait pas comprendre pourquoi, lorsque la chaîne de connexion et tout le reste était bon. Il a fallu de nombreuses heures pour comprendre que c'est les Rôles de la classe qui est à l'origine du problème.
L'attribut [Authorize] sur les contrôleurs fonctionne comme avant pour l'authentification de base. Mais chaque fois que j'essaie d'utiliser les Rôles de donner de connexion sql erreur (parce qu'il revient à l'ancien DefaultRolesProvider qui tente de se connecter à défaut SqlExpress aspnetdb fichier et échoue). Donc quelque chose comme:
[Authorize(Roles="admin")]
ne fonctionne pas. Cela ne fonctionne pas si je vais revenir à l'ancienne asp.net les fournisseurs d'appartenance, mais je perds la simple base de données, tables, jetons les bases de la confirmation et de la récupération, plus sûr de hachage de mot de passe et surtout externe connexions via le protocole OAuth.
La seule chose qui fonctionne à l'intérieur de code et de rasoir vues
User.IsInRole("admin")
qui est OK pour les éléments de menu et, mais ver lourde à mettre en œuvre à l'intérieur de chaque Action dans le contrôleur (et je n'aime pas qu'il ne teste que pour un seul rôle à la fois).
J'apprécie beaucoup tous les conseils pour le cas resovle cette question.