2008-11-25 238 views
1

是否有可能像this創造一些我ASP.NET MVC測試版1ASP.NET MVC身份驗證

我都試過,但

override bool OnPreAction(string actionName, 
          System.Reflection.MethodInfo methodInfo) 

已經不exsist和

override void OnActionExecuting(ActionExecutingContext filterContext) 

不允許我訪問操作名稱

回答

5

在您所指的blogpost中,作者s命令

解決此問題的一種方法是使用此帖中顯示的基於屬性的安全性。但是你必須用安全屬性來修飾你的動作,這不是一個好主意。

我認爲這是一個非常好的方法去解決它,它是由框架支持。它會給你一個很好的聲明性實現。查看System.Web.Mvc中的AuthorizeAttribute。它可以讓你做這樣的事情:

[Authorize(Roles="Admin, Editor")] 
public ActionResult Delete(int id){ 
    (...) 
} 

由於Delete操作會改變你的系統的狀態,我還要補充一個AcceptVerbs屬性,像這樣:

[AcceptVerbs(HttpVerbs.Post)] 
[Authorize(Roles="Admin, Editor")] 
public ActionResult Delete(int id){ 
    (...) 
} 

這將確保該操作不會接受GET請求。

0

什麼是不想與授權屬性來裝飾你的行爲的理由?對不起,但我想我會更好地理解你的情況,如果我想提供比已經給出的更好的答案。

+0

我同意符文,你最終必須把代碼放在某個地方...... – MotoWilliams 2008-11-30 06:43:47