每次加载页面时调用自定义UrlAuthorization模块

时间:2009-10-15 22:38:48

标签: c# asp.net iis .net-3.5

我已经实现了一个自定义UrlAuthorization模块,如here

所示

代码如下:

public class CustomUrlAuthorizationModule : IHttpModule 
    {
        public void Init(HttpApplication context)
        {
            context.AuthorizeRequest += new EventHandler(context_AuthorizeRequest);
        }



        void context_AuthorizeRequest(object sender, EventArgs e)
        {
            HttpApplication context = (HttpApplication)sender;

            if (context.User != null && context.User.Identity.IsAuthenticated)
            {
                HttpContext _httpContext = context.Context;
                SiteMapNode node = SiteMap.Provider.FindSiteMapNode(_httpContext);
                if (node == null)
                    throw new UnauthorizedAccessException();


            }
        }

        public void Dispose()
        {
        }

    }

我的问题是,我是否必须在加载的每个页面中调用init,或者是否有办法设置IIS以便在每次加载时自动执行。

这个问题可能非常愚蠢......

2 个答案:

答案 0 :(得分:4)

您必须在web.config中连接该模块。例如:

<configuration>
 <system.web>
  <httpModules>
   <add type=
    "MattsStuff.CustomUrlAuthorizationModule, MattsStuff"
    name="CustomUrlAuthorizationModule" />
  </httpModules>
 </system.web>
</configuration>

答案 1 :(得分:2)

只要您在web.config中注册HTTPModule,IIS就会为您设置它。

初始化被称为模块的初始化,然后将处理程序添加到相应的上下文事件中进行处理,因此它将响应所有请求。