asp项⽬中通过fig配置⽂件及⽂件夹的访问权
限!电脑开机慢怎么办
描述:在开发中我们通常会碰到这样的问题,例如:在项⽬的根⽬录下⾯有⼀个⽂件或者⽂件夹需要⽤户登陆后才能访问。如果⽤户在没有登录的情况下访问该⽂件或者该⽂件夹下⾯的⽂件时,直接拦截重定向到对应的登陆页⾯。
例⼀:
我想让⽤户在访问我的程序的Admin⽂件夹下的页⾯时需要登录,⽽在访问其他页⾯时则不需要,也就是说Admin⽂件夹下的⽂件拒绝匿名访问.
下⾯是配置根⽬录下的fig⽂件中关于授权验证的配置。
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>之后,尽管这两个节点可能在fig⽂件中相
隔⽐较远,不要觉得有什么疑惑。下⾯是对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. }
当通过上⾯⽅式授权成功后,可以通过如下代码来访问登录的⽤户名:
1. //如果登录成功
2. if (User.Identity.IsAuthenticated)行程码在哪里查询
3. {
4. //输出登录名
5. string userName = User.Identity.Name;//获取登录名
6. Response.Write("欢迎管理员:" + userName + "登录!");
7. }
当然,也可以通过代码来安全推出:
1. System.Web.Security.FormsAuthentication.SignOut();
例⼆:
为什么电脑老是死机上⾯的⽅式是“集中管理”的⽅式,也就是说在⼀个配置⽂件中配置所有页⾯的访问权限,这⼉再介绍⼀下分散管理的⽅式,即通过多个fig来配置⽂件的访问权限。
⾸先,fig的作⽤我们应该知道两点:
1、fig的设置将作⽤于所在⽬录及所在⽬录下的所有⼦⽂件下的资源——⼀般指资源,如aspx、ashx、ascx等⽂件,对.html、js、css等则不起作⽤,当然,不同的iis版本下有所不同,在此不做讨论。
2、⼦⽬录下的fig⽂件将覆盖从⽗⽬录继承下来的设置。
接下来,我们新建⼀个测试项⽬,项⽬资源如下图:
上图中的Admin⽂件夹是受保护的,只有通过省份验证的⽤户可以访问,所以,我们在根⽬录下的fig配置⽂件中做如下配置:
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点知道,可以通过重写fig配置来覆盖⽗⽬录提供的规则,因此,我们可以在Admin⽂件夹中新建⼀个fig⽂件来配置Admin⽂件夹的访问授权规则,如下:
1. <configuration>
2. <system.web>
3. <authorization><!--授权-->
4. <deny users="?"/><!--阻⽌匿名⽤户访问-->
5. </authorization>
6. </system.web>
7. </configuration>
如此以下,我们就通过“分散管理”的⽅式配置好了项⽬的访问规则。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论