web.config中配置文件夹访问权限
最近做的一个网站中需要对单独某个页面增加保护,只允许某个账户访问,因为其他页面没有访问限制,所以没有使用数据库保存账户的必要,一个解决办法就是在web.config文件中保存这个账户。
下面是网站结构:
我需要对TableView.aspx页面设置访问权限,而TableView.aspx需要查看UploadImage文件夹中图片,所以UploadImage文件夹也要设置访问权限,下面是web.config中相关内容
<configuration>
.
.
.
<system.web>
<authentication mode="Forms">
<forms defaultUrl="TableView.aspx" loginUrl="Login.aspx" name="TableViewAuth" path="/" protection="All" timeout="60">
<credentials passwordFormat="Clear">
<user name="admin" password="admin"/>
</credentials>
</forms>
</authentication>
</system.web>
<location path="TableView.aspx">
<system.web>
<authorization>
<deny users="?"/>
<allow users="admin"/>
</authorization>
</system.web>
</location>
<location path="UploadImage">
<system.web>
<authorization>
<deny users="?"/>
<allow users="admin"/>
</authorization>
</system.web>
</location>
.
.
.
</configuration>
.
.
.
<system.web>
<authentication mode="Forms">
<forms defaultUrl="TableView.aspx" loginUrl="Login.aspx" name="TableViewAuth" path="/" protection="All" timeout="60">
<credentials passwordFormat="Clear">
<user name="admin" password="admin"/>
</credentials>
</forms>
</authentication>
</system.web>
<location path="TableView.aspx">
<system.web>
<authorization>
<deny users="?"/>
<allow users="admin"/>
</authorization>
</system.web>
</location>
<location path="UploadImage">
<system.web>
<authorization>
<deny users="?"/>
<allow users="admin"/>
</authorization>
</system.web>
</location>
.
.
.
</configuration>
<authentication>子节‘allowDefinition='MachineToApplication’,那么就不能在应用程序下子目录中添加<authentication>节点,所以在location节点下若添加<authentication>就会发生错误。子目录中验证继承自应用程序级验证。
后台登录验证代码:
代码
if (FormsAuthentication.Authenticate(userName, pwd))
{
FormsAuthentication.RedirectFromLoginPage("admin", true);
}
else
Response.Write("<script>alert('User Name or Password is wrong!')</script>");
{
FormsAuthentication.RedirectFromLoginPage("admin", true);
}
else
Response.Write("<script>alert('User Name or Password is wrong!')</script>");
退出代码:
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
FormsAuthentication.RedirectToLoginPage();
最后,在web.config中如此配置,可以保护对TableView.aspx的访问。但是UploadImage文件夹中图片在asp.net development server中受到访问权限保护,而在IIS(5.1)中查看时,权限保护不起作用.(查看图片是直接输入图片的url)。
找到原因了,UploadImage文件夹中图片的后缀是.jpg,.png等,在iis中的应用程序映射中没有对应的扩展名,所以web.config中权限设置不能发挥作用。在应用程序映射列表中添加相应扩展名和处理程序后就可以对文件夹中图片保护了。