网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

ASP.NET Forms身份认证

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/05
认情况下,ASP.NET 生成随机密钥并将其存储在本地安全机构 (LSA) 中,因此,当需要在多台机器之间使用Forms身份认证时,就不能再使用随机生成密钥的方式, 需要我们手工指定,保证每台机器的密钥是一致的。

用于Forms身份认证的密钥可以在web.config的machineKey配置节中指定,我们还可以指定加密解密算法:

  1. <machineKey   
  2.   decryption="Auto" [Auto | DES | 3DES | AES]  
  3.   decryptionKey="AutoGenerate,IsolateApps" [String]  
  4. /> 

关于这二个属性,MSDN有如下解释:

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/5/C4151248824.png" />
498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/5/2D151248529.png" />
 
 
 
 
 
在客户端程序中访问受限页面

这一小节送给所有对自动化测试感兴趣的朋友。

有时我们需要用代码访问某些页面,比如:希望用代码测试服务端的响应。

如果是简单的页面,或者页面允许所有客户端访问,这样不会有问题,但是,如果此时我们要访问的页面是一个受限页面,那么就必须也要像人工操作那样:先访问登录页面,提交登录数据,获取服务端生成的登录Cookie,接下来才能去访问其它的受限页面(但要带上登录Cookie)。

注意:由于登录Cookie通常是加密的,且会发生变化,因此直接在代码中硬编码指定登录Cookie会导致代码难以维护。

在前面的示例中,我已在web.config为MyInfo.aspx设置过禁止匿名访问,如果我用下面的代码去调用:

  1. private static readonly string MyInfoPageUrl = "http://localhost:51855/MyInfo.aspx";  
  2.  
  3. static void Main(string[] args)  
  4. {  
  5.     // 这个调用得到的结果其实是default.aspx页面的输出,并非MyInfo.aspx  
  6.     HttpWebRequest request = MyHttpClient.CreateHttpWebRequest(MyInfoPageUrl);  
  7.     string html = MyHttpClient.GetResponseText(request);  
  8.  
  9.     if( html.IndexOf("<span>Fish</span>") > 0 )  
  10.         Console.WriteLine("调用成功。");  
  11.     else  
  12.         Console.WriteLine("页面结果不符合预期。");  

此时,输出的结果将会是:

页面结果不符合预期。

如果我用下面的代码:

  1. private static readonly string LoginUrl = "http://localhost:51855/default.aspx";  
  2. private static readonly string MyInfoPageUrl = "http://localhost:51855/MyInfo.aspx";  
  3.  
  4. static void Main(string[] args)  
  5. {  
  6.     // 创建一个CookieContainer实例,供多次请求之间共享Cookie  
  7.     CookieContainer cookieContainer = new CookieContainer();  
  8.  
  9.     // 首先去登录页面登录  
  10.     MyHttpClient.HttpPost(LoginUrl, "NormalLogin=aa&loginName=Fish", cookieContainer);  
  11.  
  12.     // 此时cookieContainer已经包含了服务端生成的登录Cookie  
  13.  
  14.     // 再去访问要请求的页面。  
  15.     string html = MyHttpClient.HttpGet(MyInfoPageUrl, cookieContainer);  
  16.  
  17.     if( html.IndexOf("<span>Fish</span>") > 0 )  
  18.         Console.WriteLine("调用成功。");  
  19.     else  
  20.         Console.WriteLine("页面结果不符合预期。");  
  21.  
  22.     // 如果还要访问其它的受限页面,可以继续调用。  

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号