Comment définir manuellement le rôle d'un utilisateur dans ASP.NET MVC?
Ce projet, je travaille sur m'oblige à garder une bd locale des utilisateurs admin et l'utilisation d'une base de données externe pour les utilisateurs réguliers. Toute personne qui passe d'authentification dans l'admin db doit être affecté à l' 'admin' rôle, et personne authentifiée par les autres db sera toujours attribué un "utilisateur" de rôle de.
Puis-je attribuer manuellement ces rôles? Je n'ai pas besoin de la complexité d'un Rôle de Fournisseur ou de quoi que ce soit, depuis que je suis seulement à l'aide de ces deux rôles qui sera TOUJOURS basée sur lesquelles db ils s'authentifier.
Il serait d'une grande aide si vous pouviez fournir un exemple de code ou un lien vers de la documentation. Merci!
EDIT:
Actuellement, je ne suis pas en utilisant le fournisseur de rôle et la création d'un ressemble à une corvée. Je sais que c'est pas la "meilleure pratique", mais je n'ai besoin que d'attribuer 1 de 2 rôles lors de la connexion (cela ne changera jamais). Il ne fait pas de sens pour stocker rôle de l'information dans la base de données, puisque les utilisateurs sont déjà séparés en 2 dbs par leur rôle.
Voici quelques pseudo-code:
if (AdminDB.ValidateUser(username,password)==true) {
SetAuthCookie(username);
AssociateUserWithRole(username, 'admin');
} elseif (UserDB.ValidateUser(username,password)==true) {
SetAuthCookie(username);
AssociateUserWithRole(username, 'user');
} else {
//Login failed.
}
Sa le " ThisSession.AssociateUserWithRole', je ne sais pas. En fait, l'une que l'utilisateur est authentifié, j'ai besoin de le dire .NET le rôle qui appartient l'utilisateur.
source d'informationauteur Colin O'Dell
Vous devez vous connecter pour publier un commentaire.
Mise en œuvre d'un rôle de fournisseur de n'est pas particulièrement difficile, surtout si vous êtes seulement de mettre en œuvre le rôle de la vérification, pas le rôle de la gestion. Mettre en œuvre les parties que vous avez besoin et le reste jeter NotImplementedExceptions. Si vous avez seulement une application, vous ne devez pas être trop préoccupé par cette partie. Notez que le nombre de portions dont vous avez besoin dépend de la façon dont le cadre l'utilise, pas la façon dont vous l'utiliser. Je pense, par exemple, vous aurez besoin de mettre en œuvre les bits qui renvoie tous les rôles de l'utilisateur, même si vous voulez seulement vérifier si elles sont dans un rôle spécifique.
Cela dit, vous pouvez omettre l'ensemble de la RoleProvider et faire la même chose à la Session. Dans ce cas, vous mettriez votre propre AuthorizeAttribute et remplacer l'authentification et rôle de vérification des bits avec votre propre. Stocker le rôle de l'utilisateur dans la session une fois authentifié et vérifiez-la en utilisant les attributs et les paramètres fournis à l'attribut de la méthode/classe que vous avez décorée avec.
Si vous utilisez la composition & les rôles construit en asp.net ensuite, regardez le AddUserToRole et RemoveUserFromRole:
http://msdn.microsoft.com/en-us/library/system.web.security.roles.addusertorole.aspx
Basé sur la façon dont ils la connexion, vous pouvez ajouter et supprimer si nécessaire.
Je ne pouvais pas dire à partir de votre poste si vous n'utilisez pas le rôle de fournisseur ou si vous disiez que vous ne voulez pas créer votre propre fournisseur de rôle. Si vous n'êtes pas en utilisant le construit dans le rôle de fournisseur, alors vous aurez à utiliser quel que soit le codage mécanisme en place pour passer à l'utilisateur lors de la connexion en fonction de comment et où ils se connecter à partir de.
EDIT: Maintenant que vous avez montré votre code et ont déclaré que vous n'utilisez pas l'asp.net les rôles de moteur.
Vous utilisez les formulaires d'authentification par cookie, il apparaît donc remplacer le authenticateRequest du mondial.asax fichier et de définir les rôles, en fonction des besoins et de créer votre billet.
Voici un échantillon:
http://csharpdotnetfreak.blogspot.com/2009/02/formsauthentication-ticket-roles-aspnet.html
L'échantillon ne "devient" l'rôles, mais vous pouvez ajouter/modifier les rôles ici.
Je crois que cet article (bien qu'à partir de 2003) décrit clairement le processus d'attribution des rôles à un utilisateur, et en remplaçant le principal, pour chaque demande (similaire à ce qui NerdDinner n'):
L'autorisation des Utilisateurs Basés sur des fonctions de Sécurité:
http://msdn.microsoft.com/en-us/library/aa289844%28v=vs.71%29.aspx
Si quelqu'un rencontre le même problème avec OWIN, je suppose que cela peut aider: