我已经实现了一个自定义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以便在每次加载时自动执行。
这个问题可能非常愚蠢......
答案 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就会为您设置它。
初始化被称为模块的初始化,然后将处理程序添加到相应的上下文事件中进行处理,因此它将响应所有请求。