配置ASP.NET身份验证支持
不论是开放web站点,还是B/S应用程序,我们都需要对我们程序的部分资源进行保护,不被不速之客访问,要想访问受限资源,将会重定向到登录页面,要求输入账号,为实现上面的要求,我们通常会这样配置:
<authentication mode="Forms">
<forms name=".ASPXAUTH " loginUrl="login.aspx" protection="All" timeout="120"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
<forms name=".ASPXAUTH " loginUrl="login.aspx" protection="All" timeout="120"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
(各个属性的含义,msdn有详细描述),这样,应用程序下所有的页面都将收到保护,但是我们大多数情况下只有求保护某些资源,而另一部分资源将是完全开放的(在门户站点中常常是这样的),我们把受保护的资源放在某个目录下,例如admin。
我们只需设置system.web配置节如下即可:
<authentication mode="Forms">
<forms name=".ASPXADMINUSER" loginUrl="admin/adminlogin.aspx" protection="All" timeout="20" path="/" />
</authentication>
<authorization>
<allow users="?" />
</authorization>
<forms name=".ASPXADMINUSER" loginUrl="admin/adminlogin.aspx" protection="All" timeout="20" path="/" />
</authentication>
<authorization>
<allow users="?" />
</authorization>
再在configuration配置节下如下:
<location allowOverride="false" />
<location path="admin">
<system.web>
<authorization>
<allow users="admin"></allow>
<deny users="*"></deny>
</authorization>
</system.web>
</location>
<location path="admin">
<system.web>
<authorization>
<allow users="admin"></allow>
<deny users="*"></deny>
</authorization>
</system.web>
</location>
这样admin目录下的所有页面将受到保护,注意ASP.NET对html文件不作保护。
问题来了,如果admin下大部分页面开放,只对list.aspx保护怎么办。我们可以修改
<location path="admin">为
<location path="admin/list.aspx">
按如上所述配置,将可以保护任意指定的资源,各配置属性在msdn中有说明,这里浪费时间了。