MVC初體驗 過濾器(10)

2022-07-02 16:54:13 字數 2796 閱讀 8369

主要有4中過濾器:

1.authorization  身份驗證過濾器

理解身份驗證過濾器和無侵入式開發;

假如我這裡有學生和教室兩個物件,學生進入教室需要進行身份驗證,如果在a學生上增加驗證,那麼在**層面就構成了侵入式開發,需要修改學生a的**,如果多了乙個學生c,那麼又需要繼續增加驗證**,不合適;

如果在教室物件上增加身份驗證**,如果新增了教室d,那麼身份驗證又需要重寫,同時也構成了侵入式開發;

所以最好的方案是不修改學生和教室,在它們中間加入一層中間驗證,哪個教室需要身份驗證,就給它加入乙個驗證標籤即可;

通過特性的方式打標記,決定哪些類或者行為需要進行驗證;

特性怎麼使用的:

身份驗證過濾器怎麼寫: 

如何自定義寫過濾器(**):

1)方法一:

①首先新建乙個filter資料夾(非必須,便於管理),新建乙個myauthorization類,然後繼承authorizationattribute,然後重寫onauthorization方法;

public

class

myauthorization:authorizeattribute

}

②應用特性到行為或者控制器;

[myauthorization]

public

class

homecontroller : controller

public

actionresult about()

public

actionresult contact()

}

可以放置過濾特性標籤到控制器類上或者行為上。

如何全域性註冊過濾器,使得所有的控制器,行為都具有過濾特性;

在global檔案中的

filterconfig.registerglobalfilters(globalfilters.filters);

registerglobalfilters中增加下面**即可

//所有都有了身份驗證

filters.add(new myauthorization());

2)方法二:

重寫控制器的內部onauthorization方法,這樣會應用過濾於控制器下的所有行為;

public

class

hellocontroller : controller

//重寫此方法即可,在執行順序上優先呼叫該驗證

protected

override

void

onauthorization(authorizationcontext filtercontext)

}

2.異常處理過濾器

怎麼做:

首先還是定義乙個過濾器的類,該類繼承開篇提到的handleerrorattribute類,然後類中重寫onexception方法;

public

class

myexception:handleerrorattribute

}

因為異常過濾器一般會設定在全域性環境中,那麼在註冊過濾器的**中需要這麼樣寫:

public

class

filterconfig

}

光有了這些還不夠,直接執行異常的話會報錯,是因為在webconfig中的system.web下增加customerrors標籤,並且設定mode屬性為on即可;

"

on">

"true

" targetframework="

4.5"/>

"4.5"/>

然後在專案中新建乙個error資料夾,再新建乙個400.html檔案即可。

同理身份驗證,也可以在控制器類中重寫onexception方法,然後將該控制器作為自定義基類控制器,讓子類的行為都具有異常處理。

3.行為過濾器

還是在filter資料夾下增加乙個myactionfilter類,然後繼承actionfilteratterbute,根據需要去重寫行為執行前或者行為執行後的 過濾方法即可;

public

class

myactionfilter:actionfilterattribute

//行為執行後

public

override

void

onactionexecuted(actionexecutedcontext filtercontext)

}

然後按照使用特性的方式去使用行為過濾器;

同理,也可以重寫控制器類中onactionexect[ing/ed] 方法,或者在全域性中使用。

4.結果過濾器

同行為過濾器使用方法

總結:

end

MVC過濾器 過濾器執行順序

如果某個action過濾器運用了多種過濾器,那麼過濾器的執行順序是如何呢?即執行順序是 授權過濾器 動作過濾器 結果過濾器 異常過濾器。注意 如果actionfilter過濾器執行過程中發生了異常,那麼會執行exceptionfilter過濾器,不會執行resultfilter過濾器。上圖所示的是正...

MVC的過濾器

過濾器分類 action過濾器 view結果渲染過濾器 全域性錯誤異常過濾器 身份驗證過濾器 1.action過濾器 在action執行之前和執行之後分別幹一些事 介面 iactionfilter 2.view結果渲染過濾器 介面 iactionfilter attributeusage attri...

Mvc 異常過濾器

mvc自帶乙個異常過濾器即handleerrorattribute 1.首先要進行配置web.config defaultredirect表示需要跳轉的錯誤頁面,mode需設定為 on或者 remoteonly.注 handleerror只處理伺服器500錯誤,404 400等這些錯誤不進行處理,如...