2013-08-27 60 views
0

我開發一個ASP.NET應用程序MVC4,我需要登錄2存儲過程後,打電話讓用戶具體的細節......我有一個登錄控制器,做這個東西我應該在哪裏調用登錄後方法?

[HttpPost] 
public ActionResult Login(UserLogin user) 
{ 
    if (ModelState.IsValid) 
    { 
    bool res = System.Web.Security.Membership.ValidateUser(user.UserName, user.Password); 
    if (res) 
    { 
     Utente utente = commonRepository.GetProfiloUtente(user.UserName); 

     if (utente != null) 
     { 
     Session["utente"] = utente; 
     } 

     DateTime dataLavorativa = commonRepository.GetGiornoLavorativoPrecedente(utente.IDInterno); 

     Session["data_lavorativa"] = dataLavorativa; 

     FormsAuthentication.SetAuthCookie(user.UserName, user.RememberMe); 
     return RedirectToAction("Index", "Home"); 
    } 
    else 
    { 
     ModelState.AddModelError("", "Login data is incorrect!"); 
    } 
    } 
    return View("Index", user); 
} 

這當用戶未通過身份驗證並且他被迫從登錄頁面傳遞時起作用...

在用戶連接到應用程序但他已經通過身份驗證時,我應該在哪裏放置代碼才能調用這些方法?

我不能把這個在每個控制器的索引操作... 感謝

+0

所以,如果我正確理解你所需要的是,如果cookie存在,用戶來到你的頁面,你想填寫會議數據,正確的? – TheCodeDestroyer

回答

1

我認爲你可以使用的Global.asax - Application_PreRequestHandlerExecute方法用於這一目的。

public void Application_PreRequestHandlerExecute(Object source, EventArgs e) 
{ 
bool isAuthenticated = (System.Web.HttpContext.Current.User != null) 
     && System.Web.HttpContext.Current.User.Identity.IsAuthenticated; 
    if (isAuthenticated) 
     { 
      //Do call procedures 
     } 
} 

希望它有幫助。

+0

對不起,但我得到一個NullReference異常,但沒有可能調試.... – advapi

+0

哪個對象爲null?我修改了代碼,你現在可以試試 – Anuraj

+0

這很奇怪,我放了 – advapi

0

我已經修復了這部分...我在App_Start中添加了事件處理程序而不是控制器...因爲我處於集成模式,所以我無法訪問PreRequestHandlerExecute中的會話對象,我選擇了創建一個BaseController並覆蓋它的OnAuthorization ...這是錯誤的?在這個方法裏面,如果它已經被認證,並且如果我已經有了一個Session [「user」] ...如果沒有,我從cookie中取出userID並調用2存儲過程來檢索數據...這可以嗎? 謝謝

相關問題