当前位置:文档之家› web.config文件配置项目中文件夹的访问权限

web.config文件配置项目中文件夹的访问权限

通过web.config文件配置项目中文件夹的访问权限分类: 2011-09-14 17:46 1980人阅读评论(1) 收藏举报formsmanagerauthorizationencoding该文讲解了通过web.config配置文件配置项目下文件夹的访问权限问题。

新建一个web运用程序,项目结构如下:其中Manager文件夹的页面属于管理员操作页面,所有只用通过登录并授权后才能访问,而根目录下面的页面则任何用户都可以访问,如Default.aspx页面。

首先修改根目录下的web.config配置文件,将默认的windows验证方式修改为Forms验证1.<authentication mode="Windows"/>1.<!--设置认证方式为Forms认证-->2.<authentication mode="Forms">3.<!--指定认证表单-->4.<forms loginUrl="~/Manager/Login.aspx"defaultUrl="~/Manager/Index_Manager.aspx"protection="All"></forms>5.</authentication>6.<!--授权:设置该配置文件同级目录下的所有资源的访问权限-->7.<authorization>8.<!--设置为允许所有用户访问-->9.<allow users="*"/>10.</authorization>然后在Manager文件下面添加新的web.config配置文件,该文件旨在重写外面的web.config——配置同级目录下的资源访问权限(在图中可以看到项目下有两个1.<?xml version="1.0"encoding="utf-8"?>2.<!--3.注意: 除了手动编辑此文件以外,您还可以使用4. Web 管理工具来配置应用程序的设置。

可以使用 Visual Studio 中的5.“网站”->“配置”选项。

6.设置和注释的完整列表在7. ments 中,该文件通常位于8. /Windows//Framework/v2.x/Config 中9.-->10.<configuration>11. <!--12.<appSettings/>13.<connectionStrings/>14. -->15.<system.web>16.<!--添加授权-->17.<authorization>18.<!--阻止匿名用户访问-->19.<deny users="?"/>20.</authorization>21.</system.web>22.</configuration>至此,配置文件都修改完成了,但是还需要有登录授权部分。

下面我们通过Manager文件下面的Login.aspx登录页面给通过验证的用户授权。

1.protected void btnLogin_Click(object sender, EventArgs e)2.{3.//如果用户通过验证4.if (txtUserName.Text.Trim() == "qingyun" && txtPwd.Text.Trim() == "123456")5. {6.//授权7. FormsAuthentication.SetAuthCookie(txtUserName.Text.Trim(), false);8.//登录后跳转9. Response.Redirect("~/Manager/Index_Manager.aspx");10. }11.}至此全部完成!另外,以前写过一篇关于通过web.config文件配置项目中文件的访问权限的blog,有兴趣的朋友可以对比一下。

描述:在开发中我们通常会碰到这样的问题,例如:在项目的根目录下面有一个文件或者文件夹需要用户登陆后才能访问。

如果用户在没有登录的情况下访问该文件或者该文件夹下面的文件时,直接拦截重定向到对应的登陆页面。

例一:我想让用户在访问我的程序的Admin文件夹下的页面时需要登录,而在访问其他页面时则不需要,也就是说Admin文件夹下的文件拒绝匿名访问.下面是配置根目录下的web.config文件中关于授权验证的配置。

1.<system.web>2.<authentication mode="Forms"><!--默认状态下位Windows-->3.<forms loginUrl="Admin/Login.aspx"name=".ASPXFORMSAUTH"></forms>4.</authentication>5.<authorization>6.<allow users="*"/><!--允许任何访问者访问-->7.</authorization>8.</system.web>9.<location path="Admin"><!--注意:该节点最好跟在</system.web>之后,尽管这两个节点可能在web.config文件中相隔比较远,不要觉得有什么疑惑。

下面是对Admin文件夹的访问权限的配置。

-->10.<system.web>11.<authorization>12.<deny users="?"/><!--阻止匿名用户访问-->13.</authorization>14.</system.web>15.</location>注意location节,location节不需要<authorization>节了,假若加了的话,便会出现"在应用程序级别之外使用注册为allowDefinition='MachineToApplication' "这样的错误了,若在子文件下添加配置文件时也要注意相同的问题.这样,当你在地址栏里面直接访问Admin下的任意(非Login.aspx文件)时,将会被重定向到Admin文件夹下的Login.aspx页面。

那到底是如何通过Login.aspx登陆页面授权的呢(被授权后就可以访问Admin文件夹下面的文件了)?Login.aspx页面的后台代码:1.if (userName == "xzl" && pwd == "000")2.{3. FormsAuthentication.RedirectFromLoginPage(userName, false);//授权(这里是关键)4. Response.Redirect("Main.aspx");//通过上面授权后,用户名为xzl的的用户就可以访问Admin文件夹下面的Main.aspx文件了5.}当通过上面方式授权成功后,可以通过如下代码来访问登录的用户名:view plain1.//如果登录成功2.if (User.Identity.IsAuthenticated)3.{4.//输出登录名5.string userName = ;//获取登录名6. Response.Write("欢迎管理员:" + userName + "登录!");7.}当然,也可以通过代码来安全推出:view plain1.System.Web.Security.FormsAuthentication.SignOut();例二:上面的方式是“集中管理”的方式,也就是说在一个配置文件中配置所有页面的访问权限,这儿再介绍一下分散管理的方式,即通过多个web.config来配置文件的访问权限。

首先,web.config的作用我们应该知道两点:1、web.config的设置将作用于所在目录及所在目录下的所有子文件下的资源——一般指.net资源,如aspx、ashx、ascx等文件,对.html、js、css等则不起作用,当然,不同的iis版本下有所不同,在此不做讨论。

2、子目录下的web.config文件将覆盖从父目录继承下来的设置。

接下来,我们新建一个测试项目,项目资源如下图:上图中的Admin文件夹是受保护的,只有通过省份验证的用户可以访问,所以,我们在根目录下的web.config配置文件中做如下配置:view plain1.<authentication mode="Forms"><!--Forms验证-->2.<forms loginUrl="~/Admin/Login.aspx"name=".ASPX"></forms><!--未通过则转向Login.aspx登录页-->3.</authentication>4.<authorization><!--授权:对于此目录及此目录以下的所有资源-->。

相关主题