|
如何保护纯 htm | html 网页
经测试,在 IIS 网站下的 htm | html 会直接输出,不会受到 asp.net 的管控
也因此在 asp.net 网站下的 Global.asax 之中的事件
比如 Session_OnStart 并不会被执行。
解决方法:
在 web.config 裹,输入如下:
<compilation debug="true" targetFramework="4.0">
<buildProviders>
<add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
<add extension=".htm" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>
</compilation>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<handlers>
<add name="HTML" path="*.html" verb="GET, HEAD, POST, DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" />
<add name="HTM" path="*.htm" verb="GET, HEAD, POST, DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
这些设定就可以让 htm | html 的 request 透过 ASP.NET 来处理
所以,要进行登入验证的话,如果有整合 membership 则可以:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="2880"/>
</authentication>
<authorization>
<deny users="?" />
</authorization>
如果不整合 membership provider
则可以如下
void Session_Start(object sender, EventArgs e)
{
//System.Diagnostics.Debug.WriteLine("Session Start");
if (Session["username"] == null)
Response.Redirect("MyLogin.aspx");
}
|
|