9
votes

Comment puis-je exposer la sécurité intégrée et la gestion des utilisateurs à une application MVC?

J'ai construit un site Web MVC sur IIS6. J'ai utilisé la sécurité ASP.NET intégrée sans adhésion, juste la manière dont il a été mis en œuvre dans la solution de modèle. Il est facile de sécuriser un compositeur ou une action, mais je dois maintenant exposer la gestion de l'utilisateur à un administrateur connecté au site. Je comprends que les contrôles ASP intégrés pour ce faire ne sont pas "les meilleures pratiques" et sont un chien à travailler. Alors, quelle est la meilleure pratique pour offrir une gestion des utilisateurs via une application ASP.NET MVC?

J'ai envisagé d'utiliser le cadre d'entité et de le gérer jusqu'à la myriade de Procs stockés. Mais cela semble gênant. Je vois des options pour comptesMembershipservice et FormsAuthentiservices. C'est ce que le contrôleur de compte de projet existant utilise. Mais je ne suis pas fimilaire avec non plus.

Je ne peux pas m'empêcher de penser que cela aurait déjà dû y être déjà passé à partir du modèle de projet. C'est une partie fondamentale de tout site Web et vous avez reçu 15%, pourquoi pas le reste?


2 commentaires

Quelle version d'IIS utiliserez-vous? Je suis à peu près sûr que IIS 7 a quelque chose dans construit pour la gestion des utilisateurs.


Peut-être devriez-vous simplement mettre à jour votre question au lieu de poster beaucoup de commentaires, le rend plus lisible pour que les gens essaient de répondre à votre question :)


5 Réponses :


1
votes

Autant que je puisse dire, vous utilisez sqlmembershipprovider comme mise en œuvre de votre fournisseur d'adhésion. Je suggère fortement que vous ayez un coup d'oeil à certaines des méthodes de membres de membre et les classes (telles que CreateUser , etc.) pour atteindre ce que Vous essayez de faire au lieu de travailler avec les tables de base de données sous-jacentes utilisées pour la mise en œuvre.

Vous pouvez également consulter Cet article pour une profondeur en profondeur Introduction à L'adhésion, les rôles et le profil d'ASP.NET fournisseurs.


3 commentaires

Cela ressemble à la région où je suis allé un peu. Merci pour l'article. Je pense que le MVC utilise cependant une partie de cette fonctionnalité et je souhaite éviter d'utiliser l'ensemble de l'abonnement mécanisum. Mais peut-être que c'est une mauvaise idée, nous verrons.


J'ai aussi voulu noter que j'ai évité d'éviter des tutoriels comme celui-ci car ils ne correspondent pas vraiment au MVC. Bon article cependant, je clarifie certaines choses pour moi.


Je me rends compte que le didacticiel ne correspond pas à l'état d'esprit MVC, mais cela vous donne les bases de la gestion de l'adhésion, du rôle et des objets de profil que vous pouvez utiliser pour créer votre projet MVC. Je me rends compte que c'est un pita pour ne pas avoir de kit de démarrage pour l'administration d'adhésion groupée avec ASP.NET MVC. Cependant, compte tenu de l'histoire du développement, je suppose que le filtre [Autoriser] existe même en dehors de la case, car il était trivial à mettre en œuvre pour l'équipe MVC. Donc, je suppose que vous devriez compter sur le modèle MVC par défaut plus en tant que démo qu'un point de départ.



1
votes

Consultez ce projet à CodePlex: Kit de démarreur d'adhésion ASP.NET MVC


4 commentaires

Quelqu'un va se soucier de commenter pourquoi a été évité? AFAIK Ce projet vous permet d'éditer les utilisateurs d'adhésion et les rôles au sein du MVC. (Si c'est vraiment faux, je vais supprimer la réponse)


Je ne sais pas pourquoi il a été voté, mais est-ce une partie officielle du MVC? Il semble que cela aurait dû être fait, c'est de plus en plus complète.


Je vois une raison, je pense que le kit de démarreur d'adhésion ASP.NET MVC est écrit en C #, alors que j'utilise VB2K8.


Ce n'est pas officiel, juste un projet open source visant à lutter contre un problème commun dans la mise en œuvre actuelle du MVC. Quant à la partie VB.NET, je suis un VBER aussi, mais presque toute la source open est en C #, la traduisez-le ou l'utilisez comme un projet séparé ou en le prenant comme une référence n'est pas difficile.



0
votes

Je ne sais pas sur "Meilleures pratiques", mais c'est comme ça que je le ferais (et comment il est écrit dans " Professionnel ASP.NET MVC 1.0 "):

Vous devez avoir une personnalisation (ou la valeur par défaut) ProfileProvider et MembresProvider en place pour que cela fonctionne.

Créer un contrôleur qui gère toutes les actions de gestion des membres, par exemple. MemberadMincontroller

Ce contrôleur doit avoir l'attribut autorisation [roles = "administrateur"] spécifié afin que toutes les actions de ce contrôleur ne soient traitées que si l'utilisateur est dans le rôle de l'administrateur.

Vous pouvez maintenant construire les vues et actions CRUD comment vous souhaitez utiliser uniquement ce contrôleur.


2 commentaires

C'est la direction dans laquelle je vais. Je pense que le modèle de projet est une travety puisqu'il permet de l'inscription et de tout, mais de l'expulsion de l'administration. C'est un moyen d'incendie sûr d'obtenir beaucoup de mauvaises applications là-bas.


Tout dépend de la manière dont vous implémentez votre authentification. Je ne pense pas que ce soit une travedy, le cadre ASP.NET MVC confère au développeur beaucoup plus de responsabilité car beaucoup de choses ne sont pas manipulées de manière défecturée que les formes WebFormes. Si vous n'avez pas besoin d'authentification pour le reste de votre site, ne leur donnez simplement pas. Vous devez toujours exposer un formulaire de connexion public pour accéder à votre administrateur ... Ce n'est pas différent de Webforms.



0
votes

J'ai une authentification utilisateur travaillant de manière quelque peu saine maintenant. Le plus gros obstacle à passer est qu'il est correct d'utiliser les classes d'adhésion, même si je n'utilise pas l'aspect de profil de l'adhésion. Il est facile d'obtenir le nom d'utilisateur et de faire membre.Gettuner (nom d'utilisateur). Ensuite, vous pouvez faire beaucoup de choses comme déverrouiller, approuver / désapprouver, changer le mot de passe et changer la question / la réponse du mot de passe ... toutes les bases dont j'ai besoin.

Voici les bases: p>

'get current logged in user
Dim currentUser As MembershipUser = Membership.GetUser()

'get current logged in user name
Dim userName = currentUser.UserName

'get current user email
Dim userEmail = currentUser.Email

'get a user to edit
Dim editingUser = Membership.GetUser(UserName)

'set the user email
editingUser.Email = newEmail
Membership.UpdateUser(editingUser)

‘unlock user
editingUser.UnlockUser() 

‘disapprove user
editingUser.IsApproved = False
Membership.UpdateUser(editingUser) 

‘approve user
editingUser.IsApproved = True
Membership.UpdateUser(editingUser)

‘change pw
editingUser.ChangePassword(oldPw, newPw)


0 commentaires

0
votes

Dans MVCCMS, nous avons utilisé le rôle provenant de la boîte, mais avons converti le fournisseur d'adhésion à l'entité.

http://mvccms.codeplex.com/sourcecontrol/changeeset/view/ 56727 # 994414


0 commentaires