Comment un HttpModule pour l'Authentification Personnalisée d'interagir avec l'Authentification Windows?

Je suis en train de créer un HttpModule personnalisé qui contrôle que les utilisateurs peuvent consulter un site.

Je suis en train d'essayer de tirer parti de l'Authentification Windows pour ce faire.

Sur une page individuelle, je serais probablement faire quelque chose comme ceci:

if (HttpContext.Current.User.Identity.Name.Contains("jsmith"))
{
    Response.Write("You do not have the correct permissions to view this site.");
    Response.End();
}

Mais parce que je veux faire plus configurable au niveau de l'application, je voudrais utiliser un HttpModule.

C'est là le début que j'ai fait sur le code:

using System;
using System.Web;

public class CustomAuthHttpModule : IHttpModule
{
    public void Dispose() { }

    public void Init(HttpApplication context)
    {
        context.BeginRequest += new EventHandler(OnBeginRequest);
        context.EndRequest += new EventHandler(OnEndRequest);
    }

    void OnBeginRequest(object sender, EventArgs e) { }

    void OnEndRequest(object sender, EventArgs e)
    {
        HttpApplication appObject = (HttpApplication)sender;
        HttpContext contextObject = appObject.Context;

        if (contextObject.User.Identity.Name.Contains("jsmith"))
        {
            contextObject.Response.Clear();
            contextObject.Response.End();
        }
    }
}

Je serait bien, avec l'aide du code que j'ai, si je pouvais le mettre dans la part d'onbeginrequest() fonction. Mais la propriété de l'Utilisateur n'est pas créé dans le HttpContext objet jusqu'à ce que OnEndRequest() s'exécute.

Exécutant le code précédemment ferait obstacle à l'application de faire le travail supplémentaire de la production de cette sortie, étant donné que certains utilisateurs vont être bloqués à partir de l'accès à la fin.

Quelqu'un peut-il proposer une solution pour cela est ce qui se passe parce que mon module est en cours d'exécution avant la Windows module Auth, ou quoi?

... ou, peut-être il ya un moyen plus facile de faire ce que je suis en train de faire avec IIS ou autorisations de système de fichiers?

  • Est-il une raison pour laquelle vous ne suffit de laisser IIS faire pour vous? Ou utiliser le <authorization> fonctionnalités de votre site web.config?
  • Pouvez-vous expliquer ce que vous entendez? Je vais regarder le <autorisation> les fonctionnalités de voir de quoi vous parlez là. Comment serait-IIS "faire cela pour moi?".
  • <authorization> ! Génial. J'avais la marque de ce que la réponse si il avait été l'un et pas un commentaire. Merci!
InformationsquelleAutor vwfreak | 2010-12-09