Ajouter un Utilisateur à un Rôle ASP.NET Identité
Je sais que la nouvelle composition comprend un "Simple Rôle de Fournisseur."
Je ne peux pas trouver l'aide à la création d'un utilisateur et de l'affectation d'un rôle lorsque l'utilisateur est créé. J'ai ajouté un utilisateur qui a créé les tables sur la DB correctement. Je vois le AspNetRoles
, AspNetUserRoles
, et AspNetUsers
tables.
Je suis désireux d'attribuer un rôle de AspNetRoles
à un utilisateur dans AspNetUsers
qui le ID à la fois le rôle/l'utilisateur sont stockées dans AspNetUserRoles.
Je suis bloqué sur la partie programmation de où et comment faire cela quand je crée l'utilisateur.
J'ai une liste déroulante, sélectionnez le rôle, mais à l'aide de l'Entité CF avec la nouvelle ASP.NET modèle d'Identité je ne suis pas sûr de savoir comment prendre l'ID de la selectedvalue à partir de la liste déroulante et le nom d'utilisateur et attribuer le rôle.
- Je me demandais comment vous avez obtenu la liste des rôles à mettre dans la liste déroulante? Demandez-vous d'Identité ou sont tout simplement à l'aide d'une liste de rôles connus?
- Asp.Net l'Identité s'est amélioré depuis que j'ai posté, et je crois qu'ils ont des informations sur leur site pour cela. Désolé je n'ai pas le lien.
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la bonne réponse ici L'ajout de Rôle de façon dynamique dans la nouvelle VS 2013 Identité UserManager
Mais dans le cas de donner un exemple de sorte que vous pouvez vérifier, je vais partager certaines de code par défaut.
D'abord assurez-vous d'avoir des Rôles inséré.
Et le second de le tester sur le registre des utilisateurs de la méthode.
Et, enfin, vous avez pour obtenir "les superutilisateurs" à partir des Rôles de Liste Déroulante en quelque sorte.
await this.UserManager.AddToRoleAsync(user.Id, "SpecificRole");
et l'utilisateur est ajouté au rôle.J'ai eu le même défi. C'est la solution que j'ai trouvée pour ajouter des utilisateurs à des rôles.
Alors que je suis d'accord avec les autres réponses concernant l'RoleManager, je voudrais des conseils à examiner la possibilité de mettre en œuvre l'Autorisation par le biais de Revendications (Exprimant les Rôles que les Revendications).
De départ avec le .NET Framework 4.5, Windows Identity Foundation (WIF) a été pleinement intégrée dans le .NET Framework.
En prenant en charge les revendications des applications, le rôle est exprimée par une déclaration de rôle de type qui devrait être disponible dans le jeton. Lorsque le IsInRole() la méthode est appelée, il y a un contrôle pour voir si l'utilisateur courant a ce rôle.
Le rôle type de revendication est exprimé en utilisant l'URI suivante:
"http://schemas.microsoft.com/ws/2008/06/identity/claims/role"
Donc au lieu d'utiliser le RoleManager, vous pouvez "ajouter un utilisateur à un rôle de" de la UserManager,
faire quelque chose comme ceci:
Avec les lignes ci-dessus que vous avez ajouté une déclaration de rôle avec la valeur "administrateur" pour l'utilisateur avec l'id "1"...
Demandes d'autorisation, comme suggéré par MSFT, permettent de simplifier et d'améliorer les performances de l'authentification et de l'autorisation des processus de l'élimination de certains des requêtes à chaque fois que l'autorisation a lieu.
À l'aide des Sinistres, vous ne pouvez pas besoin de l'RoleStore plus. (AspNetRoles, AspNetUserRoles)
Claims authorization, as suggested by MSFT, can simplify and increase the performance of authentication and authorization processes eliminating some back-end queries every time authorization takes place
Avez-vous une source pour cette affirmation (jeu de mots pas prévu :)) j'aurais pensé que les rôles seraient mis en cache lors de la création du jeton et vous aurait besoin de lire soit d'une réclamation ou d'un rôle de stockage, de sorte qu'un ClaimsStore voudrais juste remplacer un RoleStore.ClaimTypes.Role
au lieu de l'URL pour indiquer le type de revendication. Ainsi, vous pouvez créer une déclaration de rôle à l'aide de:new Claim(ClaimTypes.Role, "administrator")
Vous êtes à la recherche de quelque chose comme ceci:
Également vérifier L'Identité De L'Utilisateur
Vérifier ce lien: L'attribution de Rôles aux Utilisateurs. Vous pouvez ajouter une étape de votre contrôle CreateUserWIzard et choisir les rôles dans cette étape.
Et dans le code-behind, vous aurez:
Ci-dessous est une alternative à la mise en œuvre d'une "créer un utilisateur" méthode de contrôleur à l'aide de déclarations en fonction des rôles.
La création des revendications ensuite travailler avec l'Autoriser attribut par exemple [Autoriser(Rôles = "Admin, Utilisateur.*, De l'utilisateur.Créer")]
Celui-ci fonctionne pour moi. Vous pouvez voir ce code sur AccountController -> Enregistrer
mais du nom de la fonction doit exister dans votre AspNetRoles table.