该文讲解了通过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");
- }
- }