Question Directives d'utilisation d'ASP.NET MVC Account Controller?


Je regarde le contrôleur de compte MVC, et il semble provenir de formulaires Web ASP.NET. Y a-t-il de bonnes informations de base sur la façon de l'utiliser?

Pouvez-vous le mapper à une table de base de données utilisateur ou est-il préférable de gérer votre propre gestion des utilisateurs?

Comment l'utiliser dans MVC pour restreindre les pages qu'un utilisateur connecté peut consulter? Devez-vous rouler tout cela tout seul?

Quelles ressources sur le Web peuvent vous aider à comprendre l'adhésion à ASP.NET?


10
2017-10-26 00:17


origine


Réponses:


Je regarde le compte MVC   contrôleur .... il semble être de   asp.net?

Scott Guthrie explique cela assez bien dans son blog sur ASP.NET MVC Aperçu 4. Il dit essentiellement que le contrôleur de compte de l'exemple MVC utilise le fournisseur d'appartenance ASP.NET, vous pouvez donc utiliser n'importe lequel de ceux-ci. (Je pense que vous pouvez en savoir plus sur les fournisseurs d'appartenance ASP.NET sur Internet.) Si vous ne souhaitez pas implémenter / utiliser l'un de ces outils, modifier l'application pour utiliser votre propre gestion des utilisateurs serait probablement la meilleure option.

Comment l’utilisez vous dans MVC pour   restreindre les pages d'un utilisateur connecté   peut voir? Devez-vous rouler tous   ça tout seul?

Vous pouvez ajouter le Authorize attribuer à la classe de contrôleur ou à la méthode d'action. (Même la source comme ci-dessus.)

// Only logged in users can access this controller.
[Authorize]
public class SomeController : Controller
{
    #region Not really important for this example. :]
    // Maybe rather use a BLL service here instead of the repository from the DAL, but this example is already more verbose than required.
    private IStuffRepository stuffRepository;

    public SomeController(IStuffRepository stuffRepository)
    {
        if (null == stuffRepository)
        {
            throw new ArgumentNullException("stuffRepository");
        }

        this.stuffRepository = stuffRepository;
    }
    #endregion

    // The authorize attribute is inherited - only logged in users can use the index action.
    public ActionResult Index()
    {
        return View();
    }

    // Moderators can flag stuff.
    [Authorize(Roles="Moderator")]
    public ActionResult Flag(int id)
    {
        this.stuffRepository.Flag(id);
        return RedirectToAction("Index");
    }

    // Admins ans SysOps can delete stuff.
    [Authorize(Roles="Admin,SysOp")]
    public ActionResult Delete(int id)
    {
        this.stuffRepository.Delete(id);
        return RedirectToAction("Index");
    }

    // Only joed can change the objects stuff. ;)
    // (This is probably bullshit, of course, but I could not make any better example. I blame the fact it is late at night. :))
    [Authorize(Users="COMPANY\\joed")]
    public ActionResult ChangeId(int oldId, int newId)
    {
        this.stuffRepository.ChangeId(oldId, newId);
        return RedirectToAction("Index");
    }
}

18
2017-10-26 01:28