Как HttpModule для настраиваемой проверки подлинности будет взаимодействовать с проверкой подлинности Windows?

Я пытаюсь создать собственный HttpModule, который определяет, какие пользователи могут просматривать сайт.

Я пытаюсь использовать для этого проверку подлинности Windows.

На отдельной странице я, вероятно, сделал бы что-то вроде этого:

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

Но поскольку я хочу сделать это более настраиваемым на уровне приложения, я хотел бы использовать HttpModule.

Вот начало, которое я сделал. код:

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();
        }
    }
}

Я бы не отказался использовать имеющийся у меня код, если бы мог поместить его в функцию OnBeginRequest (). Но свойство User не создается в объекте HttpContext до тех пор, пока не будет запущена функция OnEndRequest ().

Выполнение кода ранее помешало бы приложению выполнять дополнительную работу по созданию этого вывода, поскольку некоторым пользователям в конце концов будет заблокирован доступ.

Может ли кто-нибудь предложить решение этой проблемы - это происходит потому, что мой модуль запущен до модуля Windows Auth, или что?

... или , может быть, есть более простой способ сделать то, что я пытаюсь сделать, с разрешениями IIS или файловой системы?

6
задан vwfreak 9 December 2010 в 17:13
поделиться