主要内容
1. Web.config概述
ASP.NET的两种配置文件
1. machine.config: 提供整个机器的默认配置,对该文件的修改将影响所有本机的站点。
1. 它存储在,安装的.NET FROMAWORK版本的文件夹中,"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config"
2. 它的配置作用域是,当前服务器下的所有的站点
3. 此文件在没有特殊需要的情况下,不建议修改其内容
4. machine.config 是 web.config 的一个基类,是一种继承关系。
2. web.config:一般用于应用程序级别的配置文件,对其修改不影响其他站点,也可以用于站点下的子目录。
1. 它存储在网站根目录下的
2. web.config文件,如果在站点根目录下,那它的作用域只是当前的整个站点。
3. 配置文件
1. 基于XML,配置节元素区分大小写
2. 可读可写(相比二进制的配置方便)
3. 修改配置后,ASP.NET自动检测变化,不需要重启服务器或IIS
2. ASP.NET身份验证
安全控制
1. 身份验证,验证用户是否拥有相应的身份
2. 权限控制,控制各种身份的用户所拥有的权限
身份验证
1. Windows身份验证(适用于局域网)
2. Passport身份验证(安全性最高的,但收费)
3. Forms身份验证(常用)
form身份验证的实现
1. 在网站根目录下创建文件夹,如:Admin;在文件夹下创建页面文件.aspx。可以通过创建不同的文件夹,放置不同的页面进去,再配合web.config实现 权限的控件。
2. web.config下的<authentication mode="Forms">标签,VS2010版本中默认是Forms验证方式。
它的子标签<forms loginUrl="当要非正常访问后台文件时要跳转的页面" timeout="30">
3. 授权
1. allow , 允许
2. deny , 拒绝
3. 特殊符号:"*"代表所有用户,"?"代表匿名用户
4. 授权(当验证通过后进行授权)
它使用的标签是<authorization>
<authorization>标签下就有两个子标签,allow , deny
<deny user="?" />表示拒绝匿名用户登陆
注意web.config的作用域,以上授权如果设置在根目录下,那么就表示整个站点都是拒绝匿名用户访问的。那么,如果我这个站点有个首页是不用用户登陆的呢?
解决办法:就是将需要授权的页面进行归类,按上面所说的创建不同的文件夹,然后,再在这些子文件夹下,创建一个web.config文件,修改子文件夹下的web.config文件,那它的作用域就只是当前目录了,同是它也是继承根目录下的web.config 文件的。
5. 编辑登陆方法,需要导入WEB安全命名空间,system.web.security;这个命名空间,是使用ASP.NET的Forms身份验证的。
在这个命名空间下有个专门管理Forms身份验证的类:FormsAuthentication
方法RedirectFormLoginPage(string str,bool bl),注意它的两个参数并不是用户名和密码两个字符串哦!!而是只有一个用户名和一个bool值。它有两个作用:
1. 当登陆成功能后要跳转到的页面,先向客户端发送加密的Cookie,这个Cookie就是一个凭证。
当用户访问后台页面时,此方法先到用户客户端查找加密的Cookie,如果有就跳转到后台页面,如果没有,就跳转到登陆页面,提示用户登陆。
当用户输入正确的用户名和密码后,就自动打开用户刚刚试图登陆的页面(注意地址中页面地址尾部的ReturnUrl变量的值,就是记录的用户刚试图打开的页面地址)
2. 然后跳转到ReturnUrl指定的页面,即登陆页面的上一个页面。
3. 方法RedirectFormLoginPage(string str,bool bl),中的bool参数,是操作服务器发送的加密Cookie的。当为false时,Cookie是被保存在客户端的浏览器端,当浏览器被关闭Cookie就消失。
那么,当bl为true时,cookie就被保存在客户端临时文件夹里。用户下次登陆时可使用这个记住的cookie登陆了。其实就是经常用的“记住密码或用户”那个选项。
经过测试,发现,原来bl设置为true,就是等我们在后台代码中,未加任何提示就帮客户把Cookie保存在临时文件夹里了。
1. Web.config概述
ASP.NET的两种配置文件
1. machine.config: 提供整个机器的默认配置,对该文件的修改将影响所有本机的站点。
1. 它存储在,安装的.NET FROMAWORK版本的文件夹中,"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config"
2. 它的配置作用域是,当前服务器下的所有的站点
3. 此文件在没有特殊需要的情况下,不建议修改其内容
4. machine.config 是 web.config 的一个基类,是一种继承关系。
2. web.config:一般用于应用程序级别的配置文件,对其修改不影响其他站点,也可以用于站点下的子目录。
1. 它存储在网站根目录下的
2. web.config文件,如果在站点根目录下,那它的作用域只是当前的整个站点。
3. 配置文件
1. 基于XML,配置节元素区分大小写
2. 可读可写(相比二进制的配置方便)
3. 修改配置后,ASP.NET自动检测变化,不需要重启服务器或IIS
2. ASP.NET身份验证
安全控制
1. 身份验证,验证用户是否拥有相应的身份
2. 权限控制,控制各种身份的用户所拥有的权限
身份验证
1. Windows身份验证(适用于局域网)
2. Passport身份验证(安全性最高的,但收费)
3. Forms身份验证(常用)
form身份验证的实现
1. 在网站根目录下创建文件夹,如:Admin;在文件夹下创建页面文件.aspx。可以通过创建不同的文件夹,放置不同的页面进去,再配合web.config实现 权限的控件。
2. web.config下的<authentication mode="Forms">标签,VS2010版本中默认是Forms验证方式。
它的子标签<forms loginUrl="当要非正常访问后台文件时要跳转的页面" timeout="30">
3. 授权
1. allow , 允许
2. deny , 拒绝
3. 特殊符号:"*"代表所有用户,"?"代表匿名用户
4. 授权(当验证通过后进行授权)
它使用的标签是<authorization>
<authorization>标签下就有两个子标签,allow , deny
<deny user="?" />表示拒绝匿名用户登陆
注意web.config的作用域,以上授权如果设置在根目录下,那么就表示整个站点都是拒绝匿名用户访问的。那么,如果我这个站点有个首页是不用用户登陆的呢?
解决办法:就是将需要授权的页面进行归类,按上面所说的创建不同的文件夹,然后,再在这些子文件夹下,创建一个web.config文件,修改子文件夹下的web.config文件,那它的作用域就只是当前目录了,同是它也是继承根目录下的web.config 文件的。
5. 编辑登陆方法,需要导入WEB安全命名空间,system.web.security;这个命名空间,是使用ASP.NET的Forms身份验证的。
在这个命名空间下有个专门管理Forms身份验证的类:FormsAuthentication
方法RedirectFormLoginPage(string str,bool bl),注意它的两个参数并不是用户名和密码两个字符串哦!!而是只有一个用户名和一个bool值。它有两个作用:
1. 当登陆成功能后要跳转到的页面,先向客户端发送加密的Cookie,这个Cookie就是一个凭证。
当用户访问后台页面时,此方法先到用户客户端查找加密的Cookie,如果有就跳转到后台页面,如果没有,就跳转到登陆页面,提示用户登陆。
当用户输入正确的用户名和密码后,就自动打开用户刚刚试图登陆的页面(注意地址中页面地址尾部的ReturnUrl变量的值,就是记录的用户刚试图打开的页面地址)
2. 然后跳转到ReturnUrl指定的页面,即登陆页面的上一个页面。
3. 方法RedirectFormLoginPage(string str,bool bl),中的bool参数,是操作服务器发送的加密Cookie的。当为false时,Cookie是被保存在客户端的浏览器端,当浏览器被关闭Cookie就消失。
那么,当bl为true时,cookie就被保存在客户端临时文件夹里。用户下次登陆时可使用这个记住的cookie登陆了。其实就是经常用的“记住密码或用户”那个选项。
经过测试,发现,原来bl设置为true,就是等我们在后台代码中,未加任何提示就帮客户把Cookie保存在临时文件夹里了。