Я пытаюсь создать собственный 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 или файловой системы?