2013-10-10 41 views
1

用戶登錄後,會話將被設置。我想檢查所有控制器中的用戶會話(不是全部,但需要登錄用戶的控制器)。在webforms中,我們可以在page_load中使用它或使用基類。在asp mvc中推薦的方法是什麼? (我看到使用基本控制器是個不錯的主意)檢查所有控制器的會話?

回答

0

您可以創建一個控制器(在此檢查會話),繼承base controller並將此控制器引用到您所需的控制器中。

BaseController:

public class BaseController : Controller 
    { 
     protected override void OnActionExecuting(ActionExecutingContext filterContext) 
     { 
      //check Session here 
     } 
    } 

DerivedController:

public class ABCController : BaseController 
    { 
     //Your code 
    } 
+0

使用基本控制器通常皺眉。 Action方法通常用於這樣的功能。 –

+0

@SimonHolman操作方法?請回答我的問題 –

+0

如何在每個操作方法中進行身份驗證? –

1

有2種方式來做到這一點。

你可以創建一個自定義的授權屬性從AuthorizeAttribute繼承並且把你所有的會話和授權碼在一個地方,或

你可以創建自己的行爲過濾器,做必要的會話檢查和重視這兩個屬性的動作/控制器。

這取決於您是要這些功能中的一個還是另一個獨立操作,如果是這樣,請選擇後一個建議。

+0

+1。事實上,他可能甚至不需要派生一個新班級。基本的AuthorizeAttribute可以獨立工作。 –