主要有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方法,這樣會應用過濾於控制器下的所有行為;
public2.異常處理過濾器class
hellocontroller : controller
//重寫此方法即可,在執行順序上優先呼叫該驗證
protected
override
void
onauthorization(authorizationcontext filtercontext)
}
怎麼做:
首先還是定義乙個過濾器的類,該類繼承開篇提到的handleerrorattribute類,然後類中重寫onexception方法;
public因為異常過濾器一般會設定在全域性環境中,那麼在註冊過濾器的**中需要這麼樣寫:class
myexception:handleerrorattribute
}
public光有了這些還不夠,直接執行異常的話會報錯,是因為在webconfig中的system.web下增加customerrors標籤,並且設定mode屬性為on即可;class
filterconfig
}
"然後在專案中新建乙個error資料夾,再新建乙個400.html檔案即可。on">
"true
" targetframework="
4.5"/>
"4.5"/>
同理身份驗證,也可以在控制器類中重寫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等這些錯誤不進行處理,如...