huanghepeng

.net 技术
posts - 13, comments - 2, trackbacks - 0, articles - 1
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

2006年12月17日

 B.1 anchor对象
  使用<A NAME=>标记创建的HTML描点能被一个链接作为目标如果锚点包括HREF=特性,则它也是一个链接对象。
  anchor对象是document对象的一个属性,它本身没有属性方法或者事件处理程序。

  B.2 anchors数组
  anchors数组是document对象的一个属性,是文档内所有anchor对象的一个列表如果anchor也是一个link(链接),则它会同时出现在anchors和links数组中。
  属性
  length 文档内的锚点个数

  B.3 array对象
  array对象是Netscape Navlgator 3.0 beta 3中引入的一个新的对象,因而,它不能在Netscape 2.0中使用它是一个内置对象,而不是其它对象的属性。
  属性
  length 数组中的值个数

  B.4 button对象
  它是form对象的一个属性,使用<INPUT TYPE="BUTTON">标记来创建。
  属性
  name HTML标记中的NAME=特性
  value HTML标记中的VALUE=特性
  方法
  click 模拟鼠标单击一按钮
  事件处理程序
  Onclick

  B.5 checkbox 对象
  它是form对象的一个属性,使用<INPUT TYPE="CHECKBOX">标记来创建。
  属性
  checked 复选框的选择状态
  defaultChecked 标记的CHECKED=特性
  name 标记的NAME=特性
  value 标记的VALUE=特性
  方法
  click 模拟鼠标单击按钮
  事件处理程序
  onclick

  B.6 Date对象
  它是一个内置对象——而不是其它对象的属性,允许用户执行各种使用日期和时间的过程。
   方法
  getDate() 查看Date对象并返回日期
  getDay() 返回星期几
  getHours() 返回小时数
  getMinutes() 返回分钟数
  getMonth() 返回月份值
  getSeconds() 返回秒数
  getTime() 返回完整的时间
  getTimezoneoffset() 返回时区偏差值(格林威治平均时间与运行脚本的计算机所处时区设置之间相差的小时数)
  getYear() 返回年份
  parse() 返回在Date字符串中自从1970年1月1日00:00:00以来的毫秒数(Date对象按照毫秒数的形式存储从那时起的日期和时间)但是注意,该方法当前不能正确运行
  setDate() 改变Date对象的日期
  setHours() 改变小时数
  setMinutes() 改变分钟数
  setMonth() 改变月份
  setSeconds() 改变秒数
  setTime() 改变完整的时间
  setYear() 改变年份
  toGMTString() 把Date对象的日期(一个数值)转变成一个GMT时间字符串,返回类似下面的值:Weds,15 June l997 14:02:02 GMT(精确的格式依赖于计算机上所运行的操作系统而变)
  toLocaleString() 把Date对象的日期(一个数值)转变成一个字符串,使用所在计算机上配置使用的特定日期格式
  UTC() 使用Date UTC(年、月、日、时、分、秒),以自从1970年1月1日00:00:00(其中时、分、秒是可选的)以来的毫秒数的形式返回日期

  B.7 document对象
  该对象是window和frames对象的一个属性,是显示于窗口或框架内的一个文档。
  属性
  alinkColor 活动链接的颜色(ALINK)
  anchor 一个HTMI锚点,使用<A NAME=>标记创建(该属性本身也是一个对象)
  anchors array 列出文档锚点对象的数组(<A NAME=>)(该属性本身也是一个对象)
  bgColor 文档的背景颜色(BGCOLOR)
  cookie 存储于cookie.txt文件内的一段信息,它是该文档对象的一个属性
  fgColor 文档的文本颜色(<BODY>标记里的TEXT特性)
  form 文档中的一个窗体(<FORM>)(该属性本身也是一个对象)
  forms anay 按照其出现在文档中的顺序列出窗体对象的一个数组(该属性本身也是一个对象)
  lastModified 文档最后的修改日期
  linkColor 文档的链接的颜色,即<BODY>标记中的LINK特性(链接到用户没有观察到的文档)
  link 文档中的一个<A HREF=>标记(该属性本身也是一个对象)
  links array 文档中link对象的一个数组,按照它们出现在文档中的顺序排列(该属性本身也是一个对象)
  location 当前显示文档的URL。用户不能改变document.location(因为这是当前显示文档的位置)。但是,可以改变window.location (用其它文档取代当前文档)window.location本身也是一个对象,而document.location不是对象
  referrer 包含链接的文档的URL,用户单击该链接可到达当前文档
  title 文档的标题((TITLE>)
  vlinkColor 指向用户已观察过的文档的链接文本颜色,即<BODY>标记的VLINK特性
  方法
  clear 清除指定文档的内容
  close 关闭文档流
  open 打开文档流
  write 把文本写入文档
  writeln 把文本写入文档,并以换行符结尾

  B.8 elements数组
  它是form对象的一个属性,列举了窗体内各元素的一个数组。
  属性
  1ength 窗体内的元素个数
  B.9 form对象
  它是document对象的一个属性,文档内的一个窗体。
  属性
  action 包含了为一个窗体提交的目标URL的字符串
  button 窗体内的一个按钮,使用<INPUT TYPE=”BUTTON”>标记来创建(该属性本身也是一个对象)
  checkbox 复选框,使用<INPUT TYPE=”CHECKBOX”>标记来创建 (该属性本身也是一个对象)
  elements array 一个数组,按照其出现于窗体内的顺序列举各窗体元素(该属性本身也是一个对象)
  encoding 窗体的MIME编码
   hidden 窗体里的一个隐藏元素(<INPUT TYPE=”HIDDEN”>)。窗体对象的一个属性(该属性本身也是一个对象)
  length 窗体里的元素的个数
  method 输入窗体的数据传送到服务器上的方式,即(FORM)标记中的METHOD特性
  radio 设置在窗体里的单选按钮(<INPUT TYPE=”RADIO”>)(该属性本身也是一个对象)
  reset 窗体里的复位按钮((1NPUT TYPE=”RESET”>)(该属性自身也是一个对象)
  select 窗体里的选择框(<SELECT>)(该属性本身也是一个对象)
  submit 窗体里的提交按钮(<INPUT TYPE=”SUBMIT”>)(该属性本身也是一个对象)
  target 提交窗体后,显示回应信息的窗口的名字
  text 窗体里的文本元素(<INPUT TYPE=”TEXT”>)(该属性本身也是一个对象)
  textarta 窗体里的文本区元素(<TEXTAREA>)(该属性本身也是一个对象)
  方法
  submit 提交窗体(与使用Submit按钮的作用相同)事件处理程序
  onsubmit

  B.10 forms数组
  该数组是document对象的一个属性,即列举了文档内的各窗体的一个数组。
  属性
  length 文档内窗体的个数

  B.11 frame对象
  它是window对象的一个属性,窗口内的一个框架。除了个别例外,frame对象与window对象的作用相同。
  属性
  frames array 列举该框架内的各个子框架的一个数组(该属性本身也是—个对象)
  length 该框架内的框架数
  name 框架的名字(<FRAME>标记里的NAME特性)
  parent 包含本框架的父窗口的同义词
  self 当前框架的同义词
  window 当前框架的同义词
  方法
  clearTimeout() 用来终止setTimeout方法的工作
  setTimeout() 等待指定的毫秒数,然后运行指令

  B.12 frames数组
  它既是window对象,也是frame对象的属性,列举了window或者frame对象内的各框架。
  属性
  length 窗口或框架对象内的框架数

  B.13 hidden对象
  糊为form对象的一个属性,窗体内的一个隐藏元素(<INPUT TYPE=”HIDDEN”>)。
  属性
  name 标记内的名字(NAME特性)
  value 标记内的VALUE=特性

  B.14 history对象
  它为window对象的一个属性,该窗口的历史列表。
  属性
  length 历史列表中的项目数
  方法
  back 加载历史列表中的上一个文档
  forward 加载历史列表中的下一个文档
  go 加载历史列表中的一个指定文档,通过文档在列表中的位置来指定

  B.15 image对象
  它是document对象的一个属性,是使用(1MG)标记内嵌入文档里的一幅图像这是Netscape Navigator 3.0 beta 3引入的新对象。
  属性
  border <IMG>标记的BORDER特性
  complete 表示浏览器是否完整地加载了图像的一个布尔值
  height HEIGHT特性
  hspace HSPACE特性
  lowsrc LOWSRC特性
  src SRC特性
  vsPace VSPACE特性
  width WIDTH特性
  事件处理程序
  Onload 图象载入
  Onerror 载入错误
  Onabort 取消

  B.16 images数组
  它是document对象的一个属性,文档中所有图像的列表。
  属性
  length 文档内的图像个数

  B.17 link
  它是document对象的一个属性,文档内的一个<A HREF=>标记。
  属性
  hash 以散列号(#)开始的一个字符串,用于指定URL内的一个锚点
  host 包括冒号和端口号的URL的主机名部分
  hostname 与host属性相同,除了不包括冒号和端口号外
  href 完整的URL
  pathname URL的目录路径部分
  port URL的:端口部分
  protocol URL类型(http:、ftp:、gopher:等等)
  search 以一个问号开始的URL中的一部分,用于指定搜索信息
  target 当用户单击一链接(TARGET特性)时,用于显示被引用文档内容的窗口
  事件处理程序
  Onclick 点击
  Onmouseover 鼠标移到对象上

  B.18 links数组
  它是document对象的一个属性,文档内所有链接的一个列表。
  属性
  length 文档内的链接数

  B.19 location对象
  它为document对象的一个属性,该文档的完整URL,请不要把它与window.location属性相混淆,后者可用来加载一个新文档,并且window.location属性本身并不是一个对象,同时,window.location可以用脚本修改,而document.location则不能。
  属性
  hash 以散列号(#)开始的一个字符串,用于指定URL内的一个锚点
  host 包括冒号和端口号的URL的主机名部分
  hostname 与host属性相同,除了不包括冒号和端口号之外
  href 完整的URL
  pathname URL的目录路径部分
  port URL的:端口部分
  protocol URL的类型(http:、ftp:、gopher:等等)
  search 以问号(?)开始的URL中的一部分,用于指定搜索信息
  target 用户单击链接(TARGET特性)时,用于显示被引用文档的内容的窗口

  B.20 math对象
  该对象不是其它对象的一个属性,而是一个内置对象,包含了许多数学常量和函数。
  属性
  E 欧拉常量,自然对数的底(约等于2.718)
  LN2 2的自然对数(约等于0.693)
  LN10 10的自然对数(约等于2.302)
  LOG2E 以2为底的e的对数(约等于1.442)
  LOG10E 以10为底的e的对数(约等于o.434)
  PI ∏的值(约等于3.14159)
  SQRT1_2 0.5的平方根(即l除以2的平方根,约等于o.707)
  SQRT2 2的平方根(约等于1.414)
  方法
  abs() 返回某数的绝对值(即该数与o的距离,例如,2与一2的绝对值都是2)
  acos() 返回某数的反余弦值(以弧度为单位)
  asin() 返回某数的反正弦值(以弧度为单位)
  atan() 返回某数的反正切值(以弧度为单位)
  ceil() 返回与某数相等,或大于该数的最小整数(ceil(-22.22)返回-22;ceil22,22)返回23;ceil(22)返回22)
  cos() 返回某数(以弧度为单位)的余弦值
  exp() 返回en
  floor() 与ceil相反(floor(一22.22)返回一23;floor(22.22)返回22; floor(22)返回22)
  10g() 返回某数的自然对数(以e为底)
  max() 返回两数间的较大值
  min() 返回两数问的较小值
  pow() 返回m的n次方(其中,m为底,n为指数)
  random() 返回0和1之间的一个伪随机数(该方法仅在Netscape
  Navigator的UNIX版本中有效)
  round() 返回某数四舍五入之后的整数
  sin() 返回某数(以弧度为单位)的正弦值
  sqrt() 返回某数的平方根
  tan() 返回某数的正切值

  B.2l navigator对象
  该对象不是其它对象的属性,而是一个内置对象它包含了有关加载文档的浏览器的信息。
  属性
  appCodeName 浏览器的代码名(例如,Mozilla)
  appName 浏览器的名字
  appVersion 浏览器的版本号
  userAgent 由客户机送到服务器的用户与代理头标文本
  方法
  javaEnabled JavaScript中当前并没有该方法,但是不久之后将会添加上它将查看浏览器是否为兼容JavaScript的浏览器,如果是,继续查看JavaScript是否处于支持状态。

  B.22 options数组
  该数组是select对象的一个属性,即选择框中的所有选项(<OPTION>)的一个列表。
  属性
  defaultSelected 选项列表中的缺省选项
  index 选项列表中某选项的索引位置
  length 选项列表中的选项数(<OPTIONS>)
  name 选项列表的名字(NAME特性)
  selected 表示选项列表中某选项<OPTION>是否被选中的一个布尔类型值
  selectedIndex 选项列表中已选中的<OPTION>的索引(位置)
  text 选项列表中<OPTION>标记后的文本
  value 选项列表中的VALUE=特性

  B.23 Password 对象
  它是document对象的一个属性,一个<INPUT TYPE=”PASSWORD”>标记。
  属性
  defaultValue password对象的缺省值(VAlUE=特性)
  name 对象的名字(NAME=特性)
  value 该域具有的当前值最初与VALUE=特性(defauttValue)相同,但是,如果脚本修改了该域中的值,则该值将改变
  方法
  focus 把焦点从该域移开
  blur 把焦点移到该域
  select 选择输入区域

  B.24 radio对象
  它是form对象的一个属性,窗体内的一组单选按钮(选项按钮)(<INPUT TYPE=”RADIO”>)。
  属性
  checked 复选框或选项按钮(单选按钮)的状态
  defaultChecked 复选框或选项按钮(单选按钮)的缺省状态
  length 一组单选按钮中的按钮数
  name 对象的名字(NAME=特性)
  value VALUE=特性
  方法
  click 模拟鼠标单击按钮
  事件处理程序
  onclick 点击

  B.25 reset 对象
  它是form对象的一个属性,复位按钮(<INPUT TYPE=”RESET”>)。
  属性
  name 对象的名字(NAME=特性)
  value VALUE=特性
  方法
  click 模拟鼠标单击按钮
  事件处理程序
  onclick 点击

  B.26 select对象
  它是form对象的一个属性,选择框(<SELECT>)。
  属性
  length 选项列表中的选项数(<OPTIONS>)
  name 选项列表的名字(NAME特性)
  options 列表中的选项数
  selectedlndex 选项列表中已选中的<OPTION>的索引(位置)
  text 选项列表中(OPTION)标记之后的文本
  value 选项列表中的VALUE=特性
  方法
  blur 把焦点从选项列表中移走
  focus 把焦点移到选项列表中
  事件处理程序
  Onblur 失去焦点时事件
  onchange 更改
  Onfocus 聚焦事件

  B.27 string对象
  它不是另一个对象的属性,而是一个内置对象,即一串字符字符串输入脚本中时必须位于引号内。
  属性
  length 字符串中的字符个数
  方法
  anchor() 用来把字符串转换到HTML锚点标记内(<A NAME=>)
  big() 把字符串中的文本变成大字体(<BIG>)
  blink() 把字符串中的文本变成闪烁字体(<BLINK>)
  bold() 把字符串中的文本变成黑字体(<B>)
  charAt() 寻找字符串中指定位置的一个字符
  fixed() 把字符串中的文本变成固定间距字体(<TT>)
  fontcolor() 改变字符串中文本的颜色(<FONT COLOR=>)
  fontsize() 把字符串中的文本变成指定大小(<FONTSIZE=>)
  indexOf() 用来搜索字符串中的某个特殊字符,并返回该字符的索引位置
  italics() 把字符串中的文本变成斜字体(<I>)
  lastlndexOf() 与indexof相似,但是向后搜索最后一个出现的字符
  link() 用来把字符串转换到HTML链接标记中(<A HREF=>)
  small() 把字符串中的文本变成小字体(<SMALL>)
  strike() 把字符串中的文本变成划掉字体(<STRIKE>)
  sub() 把字符串中的文本变成下标(subscript)字体((SUB>)
  substring() 返回字符串里指定位置间的一部分字符串
  sup() 把字符串中的文本变成上标(superscript)字体(<SUP>)
  toLowerCase() 把字符串中的文本变成小写
  toUpperCase() 把字符串中的文本变成大写

  B.28 submit对象
  它是form对象的一个属性,窗体中的一个提交按钮(<INPUT TYPE=”SUBMIT”>)。
  属性
  name 对象的名字(NAME=特性)
  value VALUE=特性
  方法
  click 模拟鼠标单击按钮
  事件处理程序
  Onclick 点击

  B.29 text对象
  它是form对象的一个属性,宙体中的一个文本域(<INPUT TYPE=”TEXT”>)。
  属性
  defaultValue text对象的缺省值(VALUE=特性)
  name 该对象的名字(NAME=特性)
  Value 该域具有的当前值,最初与VALUE=特性(defaultValue)相同但是,如果脚本修改了该域中的值,则该值将改变
  方法
  blur 把焦点从文本框移开
  focus 把焦点移到文本框
  select 选择输入区域
  事件处理程序
  Onblur 失去焦点事件
  Onchange 更改
  Onfocus 聚焦事件
  Onselect 选取事件

  B.30 textarea对象
  它是form对象的一个属性,宙体中的一个文本区域(<TEXTAREA>)。
  属性
  defaultValue textarea对象的缺省值(VALUE=特性)
  name 该对象的名字(NAME=特性)
  value 该域具有的当前值,最初与VALUE=特性(defaultValue)相同,但是,如果脚本修改了该域中的值,则该值将改变了。
  方法
  blur 把焦点从文本区移开
  focus 把焦点移到文本区
  select 选择输入区域事件处理程序
  事件处理程序
  Onblur 失去焦点事件
  Onchange 更改
  Onfocus 聚焦事件
  Onselect 选取事件

  B.31 window对象
  它是一个顶层对象,而不是另一个对象的属性即浏览器的窗口。
  属性
  defaultStatus 缺省的状态条消息
  document 当前显示的文档(该属性本身也是一个对象)
  frame 窗口里的一个框架((FRAME>)(该属性本身也是一个对象)
  frames array 列举窗口的框架对象的数组,按照这些对象在文档中出现的顺序列出(该属性本身也是一个对象)
  history 窗口的历史列表(该属性本身也是一个对象)
  length 窗口内的框架数
  location 窗口所显示文档的完整(绝对)URL(该属性本身也是一个对象)不要把它与如document.location混淆,后者是当前显示文档的URL。用户可以改变window.location(用另一个文档取代当前文档),但却不能改变document.location(因为这是当前显示文档的位置)
  name 窗口打开时,赋予该窗口的名字
  opener 代表使用window.open打开当前窗口的脚本所在的窗口(这是Netscape Navigator 3.0beta 3所引入的一个新属性)
  parent 包含当前框架的窗口的同义词。frame和window对象的一个属性
  self 当前窗口或框架的同义词
  status 状态条中的消息
  top 包含当前框架的最顶层浏览器窗口的同义词
  window 当前窗口或框架的同义词,与self相同
  方法
  alert() 打开一个Alert消息框
  clearTimeout() 用来终止setTimeout方法的工作
  close() 关闭窗口
  confirm() 打开一个Confirm消息框,用户可以选择OK或Cancel,如果用户单击OK,该方法返回true,单击Cancel返回false
  blur() 把焦点从指定窗口移开(这是Netscape Navigator 3.0 beta 3引入的新方法)
  focus() 把指定的窗口带到前台(另一个新方法)
  open() 打开一个新窗口
  prompt() 打开一个Prompt对话框,用户可向该框键入文本,并把键入的文本返回到脚本
  setTimeout() 等待一段指定的毫秒数时间,然后运行指令事件处理程序
  事件处理程序
  Onload() 页面载入时触发
  Onunload() 页面关闭时触发

posted @ 2006-12-17 13:53 黄鹤鹏 阅读(122) 评论(0) 编辑

2006年12月2日

摘要: 在ASP.NET中防止注入攻击[翻译] 出处: MSDN 原文地址应用范围:ASP.NET vertion 1.1ASP.NET vertion 2.0概要:文本主要介绍如何校验用户输入从而防止注入式攻击.校验用户输入是非常必要的,几乎所有程序级的攻击都包含恶意输入的手段.你应该校验包括字段,查询字串参数,Cookie等一切用户输入项来保护你的程序免受注入攻击.你得假设所有的用户输入都是恶意的,确...阅读全文

posted @ 2006-12-02 16:30 黄鹤鹏 阅读(539) 评论(0) 编辑

2006年11月26日

        这段时间项目进入结束阶段,一直处于空闲状态,没事就把以前收集的一些代码研究了一下,发现ASP.NET真的是很强大,光一个web.config,我要真正透彻的了解它,还要花点功夫,刚刚稍微看了一下HttpModule, 做了个小程序,写下来,当作自己的学习笔记吧。
     HttpModules实现了类似于ISAPI Filter的功能,在开发上,通常需要经过以下步骤:
    1.编写一个类,实现IhttpModule接口
    2.实现Init 方法,并且注册需要的方法 
    3.实现注册的方法
    4.实现Dispose方法,如果需要手工为类做一些清除工作,可以添加Dispose方法的实现,但这不是必需的,通常可以不为Dispose方法添加任何代码。
   5.在Web.config文件中,注册编写的类
   关于Forms身份验证,网上的说明已经很多了,下面便开始做这个小小的角色控制程序。
   首先新建asp.net项目,并添加Login.aspx, Index1.aspx,index1.aspx, default.aspx等页面。
    添加一个存储用户信息的xml文件,在里面保存用户名,密码,用户角色等信息,类似这样:
 <UsersInfo>
   <user name="admin" password="admin" role="admin" />
   <user name="user" password="user" role="user" />
</UsersInfo>
   然后在web.config文件中的system.web节点中,按照下面的代码修改authentication节点,将身份验证方式设置为forms身份验证,并将登陆页面设置为
<authentication mode="Forms">
      <forms name="TestAuth" loginUrl="Login.aspx" protection="None" timeout="60" />
  </authentication>
  另外再按如下方式增加如下节点控制用户对页面的访问的控制:
   <location path="Index1.aspx">
    <system.web>
      <authorization>
        <deny users="?" roles="user"/>
      </authorization>
    </system.web>
  </location>
   接下来在login.aspx.cs中,加上对登陆button的click事件处理函数,这里我们在IsAuthenticated方法中检查用户名密码是否通过验证,并在通过验证后取得xml文件的roles信息,然后生成FormsAuthenticationTicket,并将roles信息保存在ticket的userdata中,然后将ticket加入到客户端的cookie中,同时重定向到用户最初请求的页面。

  
private void Button1_Click(object sender, System.EventArgs e)
  {
   if(this.IsAuthenticated(TextBox1.Text,TextBox2.Text))
   {  
    string userId = TextBox1.Text;
    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,userId,DateTime.Now,DateTime.Now.AddSeconds(30),false,roles);
    HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName,FormsAuthentication.Encrypt(ticket));
    Response.Cookies.Add(cookie);
    Response.Redirect(FormsAuthentication.GetRedirectUrl(userId,false),true);
   }
  }
   然后在项目中添加新类,继承IHttpModule接口,实现Init 方法,并且注册需要的方法 :
  
namespace WebApplication1
{
    
/// <summary>
    
/// Summary description for AuthenticationModule.
    
/// </summary>

    public class AuthenticationModule : IHttpModule                
    
{
        
public AuthenticationModule()
        
{
            
//
            
// TODO: Add constructor logic here
            
//
        }


        
private void Authentication_Request(object sender,EventArgs e)
        
{
            HttpApplication App 
= (HttpApplication) sender;
            HttpContext Ctx 
= App.Context ; 
            
if (Ctx.Request.IsAuthenticated == true
            
{
                FormsIdentity Id 
= (FormsIdentity)Ctx.User.Identity ;
                FormsAuthenticationTicket Ticket 
= Id.Ticket ; 
                
string[] Roles = Ticket.UserData.Split (',') ; 
                Ctx.User 
= new GenericPrincipal (Id, Roles) ; 
            }

        }


        
IHttpModule Members
    }

    
}
       在上面的Authentication_Request方法创建一个 FormsIdentity 对象和一个 GenericPrincipal 对象。前一个对象从票名称获得用户名,后一个对象将此标识与用户角色列表包含在一起。
    最后,请务必在web.config中注册你刚编写的AuthenticationModule类,位置在刚才修改身份验证方式的system.web的节点下,添加如下代码:
   <httpModules>
   <add name="AuthenticationModule" type="WebApplication1.AuthenticationModule, WebApplication1" />
 </httpModules>
    大功告成,现在可以编译通过后,将index1.aspx设置为起始页,运行一下,是不是重定向到login.aspx页面了?然后分别用user和admin登陆,看看效果。
    结束语:如果不用httpModule,也可以把刚才Authenticate_Requset方法中的内容,放入global.asax.cs文件的Application_AuthenticateRequest方法中,效果也是一样的,不过这里我有一个小小的疑问,在网上查了不少文章是在global.asax.cs的Application_AuthorizeRequest方法中处理刚才的代码的,我试过不行,必须放在Application_AuthenticateRequest方法中,因为Application_AuthenticateRequest在Application_AuthorizeRequest之前运行,希望大家指点一下,到底是我弄错了还是网上写错了?

        <deny users="?" roles="user"/>
      </authorization>
    </system.web>
  </location>
   接下来在login.aspx.cs中,加上对登陆button的click事件处理函数,这里我们在IsAuthenticated方法中检查用户名密码是否通过验证,并在通过验证后取得xml文件的roles信息,然后生成FormsAuthenticationTicket,并将roles信息保存在ticket的userdata中,然后将ticket加入到客户端的cookie中,同时重定向到用户最初请求的页面。

  
private void Button1_Click(object sender, System.EventArgs e)
  {
   if(this.IsAuthenticated(TextBox1.Text,TextBox2.Text))
   {  
    string userId = TextBox1.Text;
    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,userId,DateTime.Now,DateTime.Now.AddSeconds(30),false,roles);
    HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName,FormsAuthentication.Encrypt(ticket));
    Response.Cookies.Add(cookie);
    Response.Redirect(FormsAuthentication.GetRedirectUrl(userId,false),true);
   }
  }
   然后在项目中添加新类,继承IHttpModule接口,实现Init 方法,并且注册需要的方法 :
          在上面的Authentication_Request方法创建一个 FormsIdentity 对象和一个 GenericPrincipal 对象。前一个对象从票名称获得用户名,后一个对象将此标识与用户角色列表包含在一起。
    最后,请务必在web.config中注册你刚编写的AuthenticationModule类,位置在刚才修改身份验证方式的system.web的节点下,添加如下代码:
   <httpModules>
   <add name="AuthenticationModule" type="WebApplication1.AuthenticationModule, WebApplication1" />
 </httpModules>
    大功告成,现在可以编译通过后,将index1.aspx设置为起始页,运行一下,是不是重定向到login.aspx页面了?然后分别用user和admin登陆,看看效果。
    结束语:如果不用httpModule,也可以把刚才Authenticate_Requset方法中的内容,放入global.asax.cs文件的Application_AuthenticateRequest方法中,效果也是一样的,不过这里我有一个小小的疑问,在网上查了不少文章是在global.asax.cs的Application_AuthorizeRequest方法中处理刚才的代码的,我试过不行,必须放在Application_AuthenticateRequest方法中,因为Application_AuthenticateRequest在Application_AuthorizeRequest之前运行,希望大家指点一下,到底是我弄错了还是网上写错了?

posted @ 2006-11-26 13:33 黄鹤鹏 阅读(393) 评论(1) 编辑

2006年11月24日

<nobr></nobr> 把控件放在其中就能禁止分行了

posted @ 2006-11-24 19:26 黄鹤鹏 阅读(112) 评论(0) 编辑

window.opener = null; window.close();

posted @ 2006-11-24 08:44 黄鹤鹏 阅读(1104) 评论(1) 编辑

2006年11月16日

    最近突然想把学到的东西来做一个网站。已经做了一半了,一个人做网站真是有蛮累的,再说水平真是有限。真是后悔以前没有好好学点东西。真希望能与大家一同学习进步。如果有人愿意一起学习进步的话就加本人qq610621721请说明来意 .本人现在做的网站地址是www.hh1314.com

posted @ 2006-11-16 13:10 黄鹤鹏 阅读(64) 评论(0) 编辑

2006年9月22日

摘要: session 事件包含 session_start, session_end ;session.collection|property|methodsession 的属性包含 sessionID 能唯一地标识每一个用户会话; timeout 用于设置超时时间,一般默认是20分钟;LCID 区位标识符; count 存储对象的个数;阅读全文

posted @ 2006-09-22 12:18 黄鹤鹏 阅读(68) 评论(0) 编辑

2006年9月19日

摘要: 汉字的匹配 \u4E00-\u9FA5匹配双字节字符(包括汉字在内):[^x00-xff]匹配空行的正则表达式:n[s| ]*r匹配HTML标记的正则表达式:/<(.*)>.*|<(.*) />/匹配首尾空格的正则表达式:(^s*)|(s*$)匹配ip地址:\d+\.\d+\.\d+\.\d+匹配网址URL的正则表达式:^[a-zA-z]+://(w+(-w+)*)(....阅读全文

posted @ 2006-09-19 17:30 黄鹤鹏 阅读(72) 评论(0) 编辑

2006年9月15日

摘要: document.attachEvent("onmousemove",moveHandler); ie5支持的方法 对应除去监听的方法document.detachEvent("onmouseup",upHandler);document.addEventListener("mousemove",moveHandler,true); ie6中的方法对应除去监听的方法是document.remove...阅读全文

posted @ 2006-09-15 00:35 黄鹤鹏 阅读(247) 评论(0) 编辑

2006年9月14日

摘要: object 返回包含的对象。  offscreenBuffering 设置或获取对象在对用户可见之前是否要先在屏幕外绘制。  offsetHeight 获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度。  offsetLeft 获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置。  offsetParent 获取定义对象 offsetT...阅读全文

posted @ 2006-09-14 20:29 黄鹤鹏 阅读(624) 评论(0) 编辑