6 votes

ASP.NET MVC Comment gérer le contenu des utilisateurs à l'aide d'ASP.NET Membership Provider

J'ai 5 ans d'expérience avec ASP.NET Web Forms, et je suis nouveau dans ASP.NET MVC. J'essaie maintenant d'apprendre MVC à l'aide de quelques tutoriels, de tutoriels vidéo et de livres.
J'utilise Visual Studio 2012 et le tout nouveau ASP.NET MVC 4 pour créer une petite application Web destinée à gérer mon portefeuille de fonds communs de placement. Cela devrait me permettre de m'imprégner du nouveau modèle et d'apprendre plein de nouvelles choses...
Mon application devrait également permettre à d'autres amis de faire de même. Elle doit donc gérer les portefeuilles de différents utilisateurs .
J'ai construit une petite base de données avec Entity Framework Code First, donc j'ai quelques modèles de base : Fonds, Portefeuille, Action, Dépôt, Source et Utilisateur. Un utilisateur peut avoir plusieurs portefeuilles avec plusieurs fonds à l'intérieur. Chaque utilisateur a sa propre liste de dépôts. Chaque fonds a plusieurs valeurs d'actions (un/jour).
Le modèle Source est simplement un tableau où je place une URL pour chaque site web source des données sur les actions d'un fonds spécifique. Ainsi, un fonds a plusieurs sources. J'utilise ensuite une classe de scraper pour obtenir les données de ces sites Web une fois par jour.
Il s'agit de la structure principale de l'application. Maintenant, j'ai besoin de savoir quelle serait la meilleure façon de :

1) Gérer le compte d'un utilisateur .
Dois-je intégrer la structure de la base de données des membres ASP.NET à ma base de données et l'utiliser à la place de ma table personnalisée des utilisateurs pour gérer les utilisateurs ?

2) Gérer le contenu des utilisateurs : portefeuilles, fonds, etc.
Quel est le le plus facile y le plus élégant Comment, dans le modèle MVC, implémenter l'authentification et toutes les validations d'autorisation pour que l'utilisateur obtienne ses propres données ? Dois-je vérifier cela dans chaque action de chaque contrôleur ?

En d'autres termes, comment dois-je mettre en œuvre mes contrôleurs ? Par exemple :

[Authorize]
public class PortfolioController : Controller
{
    private FundMonitorContext db = new FundMonitorContext();

    public ActionResult Index()
    {
        // Check user ID and give back to the view only his portfolios...

        var portfolio = db.Portfolios.List();
        return View(portfolio.ToList());
    }

    ...

    public ActionResult Details(int id = 0)
    {
        ...
    }

    //Other actions...
}

J'apprécierais vraiment toute suggestion !

0voto

Rikard Points 3588
  1. C'est un choix que vous devez faire vous-même, mais j'aime créer mon propre fournisseur d'adhésion, et ce n'est pas si difficile. Avec votre propre fournisseur, vous pouvez le faire à votre manière, pas comme ce que Microsoft pensait être cool il y a 10 ans. Exemple : http://www.codeproject.com/Articles/165159/Custom-Membership-Providers .
    Dans .NET 4.5, il est encore plus facile de créer son propre fournisseur avec SimpleMembershipProvider.

  2. Avec l'attribut [Authorize], vous indiquez au contrôleur que seuls les utilisateurs autorisés seront acceptés. Lorsqu'un utilisateur se connecte, vous pouvez placer le nom d'utilisateur/identifiant dans le cookie FormsAuthentication, ce qui vous permet d'obtenir très facilement le nom d'utilisateur/identifiant de l'utilisateur. Vous pouvez également créer des tic-tac d'authentification dans le cookie si vous voulez y mettre plus de données.

    Pour faciliter les tests, je recommande vivement de créer une liaison entre HttpContext.User et IPrincipal, http://www.hanselman.com/blog/IPrincipalUserModelBinderInASPNETMVCForEasierTesting.aspx .

0voto

Aredhel Points 99

Utiliser l'identité 2.0 pour l'authentification et l'autorisation. J'ai trouvé ce blog http://typecastexception.com/post/2014/04/20/ASPNET-MVC-and-Identity-20-Understanding-the-Basics.aspx assez utile. En gros, vous obtiendrez une authentification basée sur les réclamations et vous pourrez alors décorer vos actions avec l'attribut AuthorizeAttribute, comme par exemple

[Authorize(Roles="Admin, Moderators")]
public ActionResult MyAction(...)

et vous pouvez consulter les demandes via la propriété User.Identity dans le contrôleur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X