asp.net项目中通过Web.config配置文件及文件夹的访问权限!

描述:在开发中我们通常会碰到这样的问题,例如:在项目的根目录下面有一个文件或者文件夹需要用户登陆后才能访问。如果用户在没有登录的情况下访问该文件或者该文件夹下面的文件时,直接拦截重定向到对应的登陆页面。

例一:

我想让用户在访问我的程序的Admin文件夹下的页面时需要登录,而在访问其他页面时则不需要,也就是说Admin文件夹下的文件拒绝匿名访问.

下面是配置根目录下的web.config文件中关于授权验证的配置。

[xhtml] view plaincopy

  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页面的后台代码:

[c-sharp] view plaincopy

  1. if (userName == "xzl" && pwd == "000")
  2. {
  3. FormsAuthentication.RedirectFromLoginPage(userName, false);//授权(这里是关键)
  4. Response.Redirect("Main.aspx");//通过上面授权后,用户名为xzl的的用户就可以访问Admin文件夹下面的Main.aspx文件了
  5. }

当通过上面方式授权成功后,可以通过如下代码来访问登录的用户名:

[csharp] view plaincopy

  1. //如果登录成功
  2. if (User.Identity.IsAuthenticated)
  3. {
  4. //输出登录名
  5. string userName = User.Identity.Name;//获取登录名
  6. Response.Write("欢迎管理员:" + userName + "登录!");
  7. }

当然,也可以通过代码来安全推出:

[csharp] view plaincopy

  1. 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配置文件中做如下配置:

[html] view plaincopy

  1. <authentication mode="Forms"><!--Forms验证-->
  2. <forms loginUrl="~/Admin/Login.aspx" name=".ASPX"></forms><!--未通过则转向Login.aspx登录页-->
  3. </authentication>
  4. <authorization><!--授权:对于此目录及此目录以下的所有资源-->
  5. <allow users="*"/><!--允许所有用户访问-->
  6. </authorization>

上面配置的信息是,根目录及根目录下的所有资源允许匿名用户访问,这显然不符合我们的要求,但是,我们根据上面2点认知中的第2点知道,可以通过重写web.config配置来覆盖父目录提供的规则,因此,我们可以在Admin文件夹中新建一个web.config文件来配置Admin文件夹的访问授权规则,如下:

[html] view plaincopy

  1. <configuration>
  2. <system.web>
  3. <authorization><!--授权-->
  4. <deny users="?"/><!--阻止匿名用户访问-->
  5. </authorization>
  6. </system.web>
  7. </configuration>

如此以下,我们就通过“分散管理”的方式配置好了项目的访问规则。

时间: 2025-01-03 00:23:00

asp.net项目中通过Web.config配置文件及文件夹的访问权限!的相关文章

在ASP.NET项目中的web.config文件里配置数据库连接并在程序代码中获取连接字符串

  1.在<connectionStrings> 标签里添加连接 <connectionStrings> <add name="ConnectionName" connectionString="Server=.\SQLEXPRESS;Database=DatabaseName;UserID=sa;Password=abc123" providerName="System.Data.SqlClient" />

解决myeclipse项目中,多出的WebContent文件夹

由于通过svn导入项目,导致项目中多出WebContent文件夹,而在此之前正常的是WebRoot文件夹.这个WebContent删了之后还会自己冒出来. 直到我发现篇博客:http://blog.sina.cn/dpool/blog/s/blog_525960510100jo0j.html?vt=4 于是在Navigator中查找 1.调出Navigator窗口 2.快捷键全局查找  Ctrl+H 3.File Search 找到了之后  .classpath .org.eclipse.wst

修复Maven项目中缺少的java或test文件夹

1.在Maven项目上右键,①点击Build Path:②点击Configure Build Path ... 2.①点击Libraries:②点击JRE System Library:③点击Edit,进行编辑:④弹出对话框后,选中Alternate JRE,并选择合适的jdk:⑤.⑥点击Finish和Apply后,缺少的文件夹会自动生成 原文地址:https://www.cnblogs.com/husteryzc/p/9319345.html

Android 项目中values-v11 values-v14这两个文件夹中的style.xml

values-v11代表在API 11+的设备上,用该目录下的styles.xml代替res/values/styles.xmlvalues-v14代表在API 14+的设备上,用该目录下的styles.xml代替res/values/styles.xml 其中API 11+代表android 3.0+其中API 14+代表android 4.0+

.net 项目中应用Web Services(vs2012)

一.在asp.net项目中添加Web services1.新建一个asp.net项目(目前尚未验证是否可以在MVC项目中添加)2.在项目名上右击,选择添加→新建项→Web服务,输好名称后确定即可 二.在asp.net项目中使用Web Services1.在项目中添加对web services的引用 方法:在“引用”上右击,选择“添加服务引用”,在地址中输入web service的地址,在本例中输入的是“http://www.webxml.com.cn/WebServices/WeatherWeb

ASP.NET中Web.Config配置文件详解与应用

1.首先是Web.Config配置文件详解的参数含义(具体内容都在以下代码中有注释-我从网上找到的) 1 <?xml version="1.0" encoding="utf-8"?> 2 3 <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置.可以使用 Visual Studio 中 4 的“网站”->“Asp.Net 配置”选项. 5 6 设置和注释的完整列表在 machine.config.comm

Asp.net中web.config配置文件详解

Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中.当你通过VB.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置.如果你想修改子目录的配置设置,你可以在该子目录下新建一个 Web.config文件.它可以提供除从父目录继承的配置信息以外的配置信息,也

Asp.net中的web.config配置

目录 Asp.net中的web.config配置... 1 一. 配置文件保存位置... 2 二. 配置文件加载顺序... 2 三. 配置文件节点介绍... 3 1. . 3 2. . 5 3. . 5 4. . 6 . 11 四. 针对配置文件的一些编程操作... 11 1. 运行时进行配置文件的修改... 11 2. 配置节点的加密... 12 web.config是asp.net中保存配置信息(比如数据库连接字符串等)的重要文件.它是基于xml的文本文件方式放在Web应用程序的任何目录中,

利用ASP.NET加密和解密Web.config中连接字符串

介绍 这篇文章我将介绍如何利用ASP.NET来加密和解密Web.config中连接字符串 背景描述 在以前的博客中,我写了许多关于介绍 Asp.net, Gridview, SQL Server, Ajax, JavaScript等的文章.大多数情况下,我都把数据库的连接字符串放在了web.config中.其中包含许多敏感信息,包括连接数据库的用户名密码等.然而我们在web.config和machine.config中以纯文本的方式保存密码安全吗? 如果我们的程序只是部署在内部服务器中,这应该没