该文讲解了通过web.config配置文件配置项目下文件夹的访问权限问题。
新建一个web运用程序,项目结构如下:
其中Manager文件夹的ASP.NET页面属于管理员操作页面,所有只用通过登录并授权后才能访问,而根目录下面的ASP.NET页面则任何用户都可以访问,如Default.aspx页面。
首先修改根目录下的web.config配置文件,将默认的windows验证方式修改为Forms验证方式。在web.config配置文件中,将
<authentication mode="Windows" />
修改为:
<!--设置认证方式为Forms认证-->
<authentication mode="Forms">
<!--指定认证表单-->
<forms loginUrl="~/Manager/Login.aspx" defaultUrl="~/Manager/Index_Manager.aspx" protection="All"></forms>
</authentication>
<!--授权:设置该配置文件同级目录下的所有ASP.NET资源的访问权限-->
<authorization>
<!--设置为允许所有用户访问-->
<allow users="*"/>
</authorization>
然后在Manager文件下面添加新的web.config配置文件,该文件旨在重写外面的web.config——配置同级目录下的asp.net资源访问权限(在图中可以看到项目下有两个web.config配置文件),修改新添加的配置文件,修改结果如下:
<?xml version="1.0" encoding="utf-8"?>
<!--
注意: 除了手动编辑此文件以外,您还可以使用
Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
“网站”->“Asp.Net 配置”选项。
设置和注释的完整列表在
machine.config.comments 中,该文件通常位于
/Windows/Microsoft.Net/Framework/v2.x/Config 中
-->
<configuration>
<!--
<appSettings/>
<connectionStrings/>
-->
<system.web>
<!--添加授权-->
<authorization>
<!--阻止匿名用户访问-->
<deny users="?"/>
</authorization>
</system.web>
</configuration>
至此,配置文件都修改完成了,但是还需要有登录授权部分。
下面我们通过Manager文件下面的Login.aspx登录页面给通过验证的用户授权。
在Login.aspx的登录按钮的单击事件里
protected void btnLogin_Click(object sender, EventArgs e)
{
//如果用户通过验证
if (txtUserName.Text.Trim() == "qingyun" && txtPwd.Text.Trim() == "123456")
{
//授权
FormsAuthentication.SetAuthCookie(txtUserName.Text.Trim(), false);
//登录后跳转
Response.Redirect("~/Manager/Index_Manager.aspx");
}
}
至此全部完成!
另外,以前写过一篇关于通过web.config文件配置项目中文件的访问权限的blog,有兴趣的朋友可以对比一下。
上一篇地址:http://blog.csdn.net/qingYun1029/archive/2011/02/14/6184723.aspx