所以,我有网络应用程序,象这样web.configs:确定当前页面是否需要授权?
<authorization>
<deny users="?"/>
</authorization>
...
<location path="SomeUnsecuredPage.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
换句话说,大多数页面需要身份验证和授权,但有些却没有。
然后我有一个IHttpModule将被所有不同的应用程序使用。我想要做的就是检查当前请求是否“安全”。如果页面不需要授权,我不希望我的IHttpModule做任何事情。我正在使用FormsAuthentication,并且我认为FormsAuthentication已经将所有这些信息缓存在某处,不是吗?此外,由于此检查将不断运行,所以它必须非常快速。
我目前正在订阅HttpApplication.AuthorizeRequest,但令人惊讶的是,即使对于允许匿名访问的资源,此事件也会触发。
任何想法?谢谢阅读!
+1创建一个单身的IPrincipal实例。非常有用的一段代码。但是,它不需要创建一个'UrlAuthorizationModule'的实例。只需使用静态方法'CheckUrlAccessForPrincipal'就足够了。 – 2014-10-19 20:18:39