成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET的HttpModule

開發 后端
本文介紹ASP.NET的HttpModule,HttpModules實現了類似于ISAPI Filter的功能,包括實現Init 方法,并且注冊需要的方法等。

這段時間項目進入結束階段,一直處于空閑狀態,沒事就把以前收集的一些代碼研究了一下,發現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文件,在里面保存用戶名,密碼,用戶角色等信息,類似這樣:

  1. <UsersInfo> 
  2. <user name="admin" password="admin" role="admin" /> 
  3. <user name="user" password="user" role="user" /> 
  4. </UsersInfo> 

然后在web.config文件中的system.web節點中,按照下面的代碼修改authentication節點,將身份驗證方式設置為forms身份驗證,并將登陸頁面設置為

  1. <authentication mode="Forms"> 
  2. <forms name="TestAuth" loginUrl="Login.aspx" protection="None" timeout="60" /> 
  3. </authentication> 

另外再按如下方式增加如下節點控制用戶對頁面的訪問的控制:

  1. <location path="Index1.aspx"> 
  2. <system.web> 
  3. <authorization> 
  4. <deny users="?" roles="user"/> 
  5. </authorization> 
  6. </system.web> 
  7. </location> 


接下來在login.aspx.cs中,加上對登陸button的click事件處理函數,這里我們在IsAuthenticated方法中檢查用戶名密碼是否通過驗證,并在通過驗證后取得xml文件的roles信息,然后生成 FormsAuthenticationTicket,并將roles信息保存在ticket的userdata中,然后將ticket加入到客戶端的 cookie中,同時重定向到用戶最初請求的頁面。

  1. private void Button1_Click(object sender, System.EventArgs e)  
  2. {  
  3. if(this.IsAuthenticated(TextBox1.Text,TextBox2.Text))  
  4. {  
  5. string userId = TextBox1.Text;  
  6. FormsAuthenticationTicket ticket = new FormsAuthenticationTicket
    (1,userId,DateTime.Now,DateTime.Now.AddSeconds(30),false,roles);  
  7. HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName,
    FormsAuthentication.Encrypt(ticket));  
  8. Response.Cookies.Add(cookie);  
  9. Response.Redirect(FormsAuthentication.GetRedirectUrl(userId,false),true);  
  10. }  


然后在項目中添加新類,繼承IHttpModule接口,實現Init 方法,并且注冊需要的方法 :

  1. namespace WebApplication1  
  2. {  
  3. /**//// <summary> 
  4. /// Summary description for AuthenticationModule.  
  5. /// </summary> 
  6.     public class AuthenticationModule : IHttpModule  
  7. {  
  8. public AuthenticationModule()  
  9. {  
  10. //  
  11. // TODO: Add constructor logic here  
  12. //  
  13. }  
  14. private void Authentication_Request(object sender,EventArgs e)  
  15. {  
  16. HttpApplication App = (HttpApplication) sender;  
  17. HttpContext Ctx = App.Context ;  
  18. if (Ctx.Request.IsAuthenticated == true)  
  19. {  
  20. FormsIdentity Id = (FormsIdentity)Ctx.User.Identity ;  
  21. FormsAuthenticationTicket Ticket = Id.Ticket ;  
  22. string[] Roles = Ticket.UserData.Split (',') ;  
  23. Ctx.User = new GenericPrincipal (Id, Roles) ;  
  24. }  
  25. }  
  26. IHttpModule Members#region IHttpModule Members  
  27. void IHttpModule.Init(HttpApplication context)  
  28. {  
  29. context.AuthenticateRequest += new EventHandler(this.Authentication_Request);  
  30. }  
  31. void IHttpModule.Dispose()  
  32. {  
  33. }  
  34. #endregion  
  35. }  

在上面的Authentication_Request方法創建一個 FormsIdentity 對象和一個 GenericPrincipal 對象。前一個對象從票名稱獲得用戶名,后一個對象將此標識與用戶角色列表包含在一起。

最后,請務必在web.config中注冊你剛編寫的AuthenticationModule類,位置在剛才修改身份驗證方式的system.web的節點下,添加如下代碼:

  1. <httpModules> 
  2. <add name="AuthenticationModule" type="WebApplication1.
    AuthenticationModule, WebApplication1"
     /> 
  3. </httpModules>  

大功告成,現在可以編譯通過后,將index1.aspx設置為起始頁,運行一下,是不是重定向到login.aspx頁面了?然后分別用user和admin登陸,看看效果。以上介紹ASP.NET的HttpModule

【編輯推薦】

  1. ASP.NET的TypeConverter
  2. 淺析ASP.NET的TypeResolver
  3. ASP.NET中定義JavaScriptConverter
  4. 在ASP.NET中替換Sys.Services的方法
  5. 使用ASP.NET AJAX的Profile Service
責任編輯:佚名 來源: IT168
相關推薦

2009-07-22 17:45:35

ASP.NET教程

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入門教程

2009-07-29 11:19:03

JavaScriptASP.NET

2009-07-29 16:33:28

GreeterLogiASP.NET

2009-07-27 10:35:33

TypeConvertASP.NET

2009-07-29 14:52:12

IScriptContASP.NET

2009-07-29 17:11:25

ASP.NET ISA

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設計

2009-07-29 16:08:07

ASP和ASP.NET

2009-07-29 17:29:46

ASP與ASP.NET

2009-07-22 18:03:00

ASP.NET ASP

2011-09-22 10:58:56

ASP.NET

2009-07-28 14:40:15

XML數據ASP.NET

2009-07-27 13:52:36

Panel控件ASP.NET

2009-07-28 13:26:34

Render方法ASP.NET

2009-07-22 17:23:03

XmlDataSourASP.NET 2.0

2009-07-29 10:19:48

Session StaASP.NET

2009-07-27 15:34:11

MembershipASP.NET
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产羞羞视频在线观看 | 超碰在线人人 | 精品欧美一区免费观看α√ | 亚洲资源在线 | 国产一区二区麻豆 | 日韩视频在线一区二区 | 四虎影院在线观看免费视频 | 人人种亚洲 | 欧美色综合一区二区三区 | 亚洲精品一区中文字幕 | 欧美日韩精品中文字幕 | 国产精品一级 | 99久久精品视频免费 | 国产精品亚洲精品日韩已方 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | www亚洲精品 | 午夜影视在线观看 | 亚洲一区二区三区四区五区中文 | 国产精品久久777777 | 日韩在线视频一区 | 亚洲精品久久久久久久不卡四虎 | 91麻豆精品国产91久久久久久久久 | 人人射人人插 | 久久久黄色 | 日韩av成人 | 国产成人精品一区二区三区在线 | 美美女高清毛片视频免费观看 | 亚洲欧美国产毛片在线 | 亚洲福利一区二区 | 国产成在线观看免费视频 | 久久久久久国产精品 | 国产精品自产拍 | 国产精品久久久久久久久久久久久久 | 超碰成人av| 国产一区二区三区四区hd | 国产亚洲一区二区三区 | 亚洲视频区 | 成人免费淫片aa视频免费 | 91原创视频 | 美女久久| 99久久婷婷国产综合精品电影 |