ASP.NET中的URL過(guò)濾實(shí)現(xiàn)代碼
下面是類的定義。
using System;
using System.Web;
using System.Web.SessionState;
namespace QTJZ
{
public class Filters : IHttpModule, IRequiresSessionState
{
public void Dispose() { }
public void Init(HttpApplication application)
{
application.AcquireRequestState += new EventHandler(application_AcquireRequestState);
}
public void application_AcquireRequestState(object sender, EventArgs e)
{
HttpApplication application = sender as HttpApplication;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string url=request.CurrentExecutionFilePath.Trim('/');
string suffix = request.CurrentExecutionFilePathExtension.Trim('.');
if (!url.Equals("Default.htm") && (suffix == "aspx" || suffix == "htm"))
{
object sessionObj = application.Context.Session == null ? null : application.Session["useID"];
if (sessionObj==null)
{
response.Redirect("~/Default.htm");
}
}
}
}
}
為了實(shí)現(xiàn)過(guò)濾的效果,F(xiàn)ilters類需要實(shí)現(xiàn)IHttpMoeld接口,實(shí)現(xiàn)該接口需要有兩個(gè)方法,一個(gè)是Dispose,另一個(gè)是Init。Init的參數(shù)是一個(gè)HttpApplication類型的實(shí)例,利用這個(gè)實(shí)例注冊(cè)一些事件。由于現(xiàn)在要對(duì)URL進(jìn)行過(guò)濾,因此注冊(cè)的是AcquireRequestState事件。類似事件羅列如下
| BeginRequest | 在 ASP.NET 響應(yīng)請(qǐng)求時(shí)作為 HTTP 執(zhí)行管線鏈中的第一個(gè)事件發(fā)生。 |
| AuthenticateRequest | 當(dāng)安全模塊已建立用戶標(biāo)識(shí)時(shí)發(fā)生。 |
| AuthorizeRequest | 當(dāng)安全模塊已驗(yàn)證用戶授權(quán)時(shí)發(fā)生。 |
| ResolveRequestCache |
在 ASP.NET 完成授權(quán)事件以使緩存模塊從緩存中為請(qǐng)求提供服務(wù)后發(fā)生, 從而繞過(guò)事件處理程序(例如某個(gè)頁(yè)或 XML Web services)的執(zhí)行。 |
| AcquireRequestState | 當(dāng) ASP.NET 獲取與當(dāng)前請(qǐng)求關(guān)聯(lián)的當(dāng)前狀態(tài)(如會(huì)話狀態(tài))時(shí)發(fā)生。 |
| PreRequestHandlerExecute | 恰好在 ASP.NET 開(kāi)始執(zhí)行事件處理程序(例如,某頁(yè)或某個(gè) XML Web services)前發(fā)生。 |
| PostRequestHandlerExecute | 在 ASP.NET 事件處理程序(例如,某頁(yè)或某個(gè) XML Web service)執(zhí)行完畢時(shí)發(fā)生。 |
| ReleaseRequestState | 在 ASP.NET 執(zhí)行完所有請(qǐng)求事件處理程序后發(fā)生。 該事件將使?fàn)顟B(tài)模塊保存當(dāng)前狀態(tài)數(shù)據(jù)。 |
| UpdateRequestCache | 當(dāng) ASP.NET 執(zhí)行完事件處理程序以使緩存模塊存儲(chǔ)將用于從緩存為后續(xù)請(qǐng)求提供服務(wù)的響應(yīng)時(shí)發(fā)生。 |
| EndRequest | 在 ASP.NET 響應(yīng)請(qǐng)求時(shí)作為 HTTP 執(zhí)行管線鏈中的最后一個(gè)事件發(fā)生。 |
獲取要跳轉(zhuǎn)的url可以用request的CurrentExecutionFilePath屬性,而獲取請(qǐng)求文件的后綴可以用CurrentExecutionFilePathExtension,至于要按什么規(guī)則來(lái)判斷,按需求而定。我這里是在請(qǐng)求時(shí)判斷Session是否存在,不存在則跳轉(zhuǎn)回登陸頁(yè)面。由于要用到Session,打開(kāi)頁(yè)面的時(shí)候會(huì)拋出異常,異常信息是“會(huì)話狀態(tài)在此上下文中不可用。”,在實(shí)現(xiàn)了IRequiresSessionState接口之后就沒(méi)有異常拋出了。
此外,還需要在配置文件Web.config的 <system.web>節(jié)點(diǎn)下添加如下代碼
<httpModules>
<add name="filters" type="QTJZ.Filters"/>
</httpModules>
其中type屬性則是上面Filters類的完全限定名
- asp.NET 臟字過(guò)濾算法 修改版
- asp.NET 臟字過(guò)濾算法
- ASP.NET過(guò)濾器的應(yīng)用方法介紹
- asp.net 過(guò)濾圖片標(biāo)簽的正則
- ASP.NET環(huán)境下為網(wǎng)站增加IP過(guò)濾功能
- ASP.NET過(guò)濾HTML標(biāo)簽只保留換行與空格的方法
- ASP.NET過(guò)濾HTML字符串方法總結(jié)
- asp.net 臟字典過(guò)濾問(wèn)題 用正則表達(dá)式來(lái)過(guò)濾臟數(shù)據(jù)
- Asp.net之?dāng)?shù)據(jù)過(guò)濾淺析
- ASP.NET過(guò)濾類SqlFilter,防止SQL注入
- 高效.NET臟字過(guò)濾算法與應(yīng)用實(shí)例
相關(guān)文章
利用ASP.NET MVC和Bootstrap快速搭建個(gè)人博客之后臺(tái)dataTable數(shù)據(jù)列表
jQuery dataTables 插件是一個(gè)優(yōu)秀的表格插件,應(yīng)用非常廣泛,本文給大家介紹利用ASP.NET MVC和Bootstrap快速搭建個(gè)人博客之后臺(tái)dataTable數(shù)據(jù)列表,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧2016-07-07
ASPX中的用戶控件與ASP中的INCLUDE方法對(duì)比
ASPX中的用戶控件與ASP中的INCLUDE方法對(duì)比...2006-09-09
.Net使用SuperSocket框架實(shí)現(xiàn)WebSocket后端
這篇文章介紹了.Net使用SuperSocket框架實(shí)現(xiàn)WebSocket后端,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01
淺談ASP.Net Core WebApi幾種版本控制對(duì)比
這篇文章主要介紹了淺談ASP.Net Core WebApi幾種版本控制對(duì)比,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
關(guān)于DDD:管理"工作單元實(shí)例"的兩種模式的使用方法
本篇文章介紹了,關(guān)于DDD:管理"工作單元實(shí)例"的兩種模式的使用方法。需要的朋友參考下2013-04-04
IIS處理Asp.net請(qǐng)求和Asp.net頁(yè)面生命周期詳細(xì)說(shuō)明
ASP.NET 頁(yè)運(yùn)行時(shí),此頁(yè)將經(jīng)歷一個(gè)生命周期,在生命周期中將執(zhí)行一系列處理步驟。這些步驟包括初始化、實(shí)例化控件、還原和維護(hù)狀態(tài)、運(yùn)行事件處理程序代碼以及進(jìn)行呈現(xiàn)2012-01-01
MVC+EasyUI+三層新聞網(wǎng)站建立 后臺(tái)登錄界面的搭建(二)
這篇文章主要為大家詳細(xì)介紹了MVC+EasyUI+三層新聞網(wǎng)站建立的第二篇,教大家如何搭建后臺(tái)登錄界面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
asp.net richTextBox中高亮顯示選中字符串或文本
最近開(kāi)發(fā)程序需要對(duì)一段文本中的某個(gè)字符串進(jìn)行高亮顯示,網(wǎng)上找了下資料2011-11-11

