webinitconfig文件夹如何为网站的文件夹设置权限

转载三篇关于 Web.config 的 Authorization 节点配置的文章
文章一、WebConfig Authorization 节点
授权的目的是确定是否应该授予某个标识对给定资源请求的访问权限类型。有两种基本方式来授予对给定资源的访问权限:
文件授权由&FileAuthorizationModule&执行,它在使用&Windows&身份验证时处于活动状态。它执行&.aspx&或&.asmx&处理程序文件的访问控制列表&(ACL)&检查以确定用户是否应该具有访问权限。应用程序可以进一步使用模拟在正在访问的资源上进行资源检查。
URL&授权由&URLAuthorizationModule&执行,它将用户和角色映射到&URL&命名空间的块上。此模块实现正和负两种授权断言。也就是说,对于某些集、用户或角色,该模块可用于有选择地允许或拒绝对&URL&命名空间的任意部分的访问。
URLAuthorizationModule&在任何时候都是可用的。只需在配置文件的&&authorization&&部分的&&allow&&或&&deny&&元素中放置用户和/或角色的列表即可。
若要建立访问特定目录的条件,则必须将一个包含&&authorization&&部分的配置文件放置在该目录中。为该目录设置的条件也会应用到其子目录,除非子目录中的配置文件重写这些条件。此部分的常规语法如下所示。
&[element] [users] [roles] [verbs]/&
元素是必需的。必须包含&users&或&roles&属性。可以同时包含二者,但这不是必需的。verbs&属性是可选的。
允许的元素有&&allow&&和&&deny&,它们分别授予和撤消访问权限。每个元素支持三个属性,这些属性在下面的表中定义。
标识此元素的目标角色。请求所关联的&IPrincipal&对象确定角色成员。可以将任意&IPrincipal&对象附加到给定请求的上下文中,这些对象可通过您喜欢的任何方式来确定角色成员。例如,默认的&WindowsPrincipal&类使用&Microsoft Windows NT&组来确定角色成员。
标识此元素的目标身份。
定义操作所要应用到的&HTTP&谓词,如&GET、HEAD&和&POST。
还会拒绝匿名用户。
以下示例向&Kim&和管理角色的成员授予权限,而拒绝&John&和所有匿名用户:
&authorization&
&&& &allow users="Kim"/&
&&& &allow roles="Admins"/&
&&& &deny users="John"/&
&&& &deny users="?"/&
&/authorization&
用户和角色都可以通过使用逗号分隔的列表来引用多个实体,如下面的示例所示。
&allow users="John, Kim, contoso\Jane"/&
注意,域帐户&(contoso\Jane)&必须同时包括域和用户名的组合。
除身份名称外,还有两种特殊身份,如下表所示。
指所有身份
指匿名身份
若要允许&John&并拒绝其他任何人,可以构造下面的配置部分。
&authorization&
&&& &allow users="John"/&
&&& &deny users="*"/&
&/authorization&
下面的示例允许每个人使用&GET,但只有&Kim&可以使用&POST。
&authorization&
&&& &allow verb="GET" users="*"/&
&&& &allow verb="POST" users="Kim"/&
&&& &deny verb="POST" users="*"/&
&/authorization&
使用下面的试探法应用规则:
位于较低目录级别的配置文件中包含的规则优先于位于较高目录级别的规则。系统通过构造一个&URL&的所有规则的合并列表,其中最近(层次结构中距离最近)的规则位于列表头,来确定哪条规则优先。
给定&URL&的一组合并的规则,系统从列表头开始,检查规则直到找到第一个匹配项为止。注意,ASP.NET&的默认配置包含向所有用户授权的&&allow users="*"&&元素。如果没有匹配的规则,则将允许请求,除非另外拒绝。如果找到匹配项并且匹配项是&&deny&&元素,则它将返回&401&状态代码。应用程序或站点可以方便地配置位于其站点或应用程序顶层的&deny users="*"&&元素以防止此行为。
如果是&&allow&&匹配,则模块不执行任何操作,允许进一步处理请求。
还有&&location&&标记,您可以使用该标记来指定特定的文件或目录,由该标记环绕(即在&&location&&和&&/location&&标记之间)的那些设置将应用到该文件或目录。
文章二、Config 配置 authorization deny allow&authorization&
&deny users = "?"/&
&allow users= "*" /&
&/authorization&
?:匿名用户,也就是没有登入的用户不能访问。
*:所有用户,所有用户都不能访问。
&deny users = "?"/&、 是拒绝匿名用户访问
&allow users= "*" /& 允许所有的用户访问包括匿名用户&authentication mode="Forms"&
&forms name=".ASPXAUTH" loginUrl="~/login.aspx"&&/forms&
&!-- 默认cookie 名 及登陆页面地址
&/authentication&
&authorization&
&deny users="?"&&/deny& &!-- 禁止匿名访问
&/authorization&
&location path="Default.aspx"&&!--允许所有人访问这个页面--&
&system.web&
&authorization&
&allow users="*"/&
&/authorization&
&/system.web&
&/location&
自定义票据// 自定义票据,获取用户的roles,写到票据中。票据会携带在cookie中。
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
// version
// user name
DateTime.Now,
// creation
DateTime.Now.AddMinutes(60 * 20),
// Expiration
// Persistent
// userData
String encryptedTicket = FormsAuthentication.Encrypt(authTicket);
HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
Response.Cookies.Add(authCookie);
文章三、关于 &authorization& 中 &deny users="?"& 和 &allow users="*"&
问&authorization&
&deny users = "?"/&
&allow users= "*" /&
&/authorization&
如果以上面的效果显示,那么用户访问站点下的其他页,如果没有登录的话,都会转到登录页。
但是要是把 &allow users= "*" /& 放到 &deny users = "?"/& 前面,在没有登录的情况下,可以随意访问其他页面,没有限制。这是什么工作机制?对顺序也有要求吗?
运行时,授权模块从最本地的配置文件开始,循环访问 allow 和 deny 元素,直到它找到适合特定用户帐户的第一个访问规则。然后,该授权模块根据找到的第一个访问规则是 allow 还是 deny 规则来允许或拒绝对 URL 资源的访问。默认的授权规则为 &allow users="*"/&。因此,默认情况下允许访问,除非另外配置。
所以应该把适用用户群最小的放在最前面。
我来说一说
怎么记匿名和所有用户(包含匿名用户)的符号:匿名用 ?,一个问号,表示在问“你谁呀?不认识,快登录!”;所有用户(包含匿名用户)用 *,这个大家通配符常用的,不复杂。webConfig对访问者的权限设置
&configuration&
&system.web&
&compilation debug="true" targetFramework="4.0" /&
Session跳转网页的方式
&authentication mode="Forms"&
&forms loginUrl="WebLogin.aspx" defaultUrl="Index.aspx"/&
&/authentication&
&authorization&
&!---拒绝所有匿名用户访问项目下的所有文件--&
&deny users="?"/&
&!--设置所有用户都可以访问项目下的所有文件--&
&!--&allow users="*"/&--&
&/authorization&
&/system.web&
&!--设置非匿名用户可以访问项目下的文件路径--&
&location path="admin"&
&system.web&
&authorization&
&deny users="?"/&
&/authorization&
&/system.web&
&/location&
&/configuration&
没有更多推荐了,用心做自己该做的事
如何通过代码修改web.config文件
网站中大部分配置存储在web.config的appSettings节中,可以通过System.Web.Configuration.WebConfigurationManager.AppSettings.Get读取相应的节,如何设置这些节点的值并保存呢?
修改web.config的内容可以使用
Configuration cfg =
System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
AppSettingsSection appSetting = cfg.AppS
appSetting.Settings["a"].Value = "changed by application";
cfg.Save();
但是请注意修改web.config中的任何内容,都会导致一次application 重起,会丢失当前的session, application, cache中的所有信息。
建议的做法是在当前的站点中再加入一个config文件,修改自己加入的config文件。
第二种使用xmldocument的方式
XmlDocument webconfigDoc = new XmlDocument();
string filePath = HttpContext.Current.Request.PhysicalApplicationPath + @"/web.config";
//设置节的xml路径
string xPath = "/configuration/appSettings/add[@key='?']";
//加载web.config文件
webconfigDoc.Load(filePath);
//找到要修改的节点
XmlNode passkey = webconfigDoc.SelectSingleNode(xPath.Replace("?","SysAdminPass"));
//设置节点的值
passkey.Attributes["value"].InnerText = strN
//保存设置
webconfigDoc.Save(filePath);
没有更多推荐了,温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'修改 Web 配置,应用程序需要该文件的写权限,及需要对包含该文件的目录具有创建特权。',
blogAbstract:'// Obtains the machine configuration settings on a remote machine.System.Configuration.Configuration remoteMachineConfig =&&& System.Web.Configuration.WebConfigurationManager.OpenMachineConfiguration&&& (null, \"ServerName\", userToken);remoteMachineConfig.SaveAs(\"c:\\\\remoteMachineConfig.xml\");// Obtains the root Web configuration settings on a remote machine.',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:0,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}记录平时遇到的问题,省得瞎耽误功夫...
asp.net项目中通过Web.config配置文件及文件夹的访问权限!
描述:在开发中我们通常会碰到这样的问题,例如:在项目的根目录下面有一个文件或者文件夹需要用户登陆后才能访问。如果用户在没有登录的情况下访问该文件或者该文件夹下面的文件时,直接拦截重定向到对应的登陆页面。
我想让用户在访问我的程序的Admin文件夹下的页面时需要登录,而在访问其他页面时则不需要,也就是说Admin文件夹下的文件拒绝匿名访问.
下面是配置根目录下的web.config文件中关于授权验证的配置。
注意location节,location节不需要&authorization&节了,假若加了的话,便会出现"在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' "这样的错误了,若在子文件下添加配置文件时也要注意相同的问题.
这样,当你在地址栏里面直接访问Admin下的任意(非Login.aspx文件)时,将会被重定向到Admin文件夹下的Login.aspx页面。
那到底是如何通过Login.aspx登陆页面授权的呢(被授权后就可以访问Admin文件夹下面的文件了)?
Login.aspx页面的后台代码:
当通过上面方式授权成功后,可以通过如下代码来访问登录的用户名:
当然,也可以通过代码来安全推出:
上面的方式是“集中管理”的方式,也就是说在一个配置文件中配置所有页面的访问权限,这儿再介绍一下分散管理的方式,即通过多个web.config来配置文件的访问权限。
首先,web.config的作用我们应该知道两点:
1、web.config的设置将作用于所在目录及所在目录下的所有子文件下的资源——一般指.net资源,如aspx、ashx、ascx等文件,对.html、js、css等则不起作用,当然,不同的iis版本下有所不同,在此不做讨论。
2、子目录下的web.config文件将覆盖从父目录继承下来的设置。
接下来,我们新建一个测试项目,项目资源如下图:
上图中的Admin文件夹是受保护的,只有通过省份验证的用户可以访问,所以,我们在根目录下的web.config配置文件中做如下配置:
上面配置的信息是,根目录及根目录下的所有资源允许匿名用户访问,这显然不符合我们的要求,但是,我们根据上面2点认知中的第2点知道,可以通过重写web.config配置来覆盖父目录提供的规则,因此,我们可以在Admin文件夹中新建一个web.config文件来配置Admin文件夹的访问授权规则,如下:
如此以下,我们就通过“分散管理”的方式配置好了项目的访问规则。
转自:http://www.cnblogs.com/lsgsanxiao/p/4253441.html
没有更多推荐了,

我要回帖

更多关于 config是什么文件夹 的文章

 

随机推荐