2016-02-21 144 views
-1

我正在使用mvc3應用程序,其中點擊登錄按鈕後,我檢查該用戶是否驗證或不使用jQuery中的ajax調用。如果用戶通過身份驗證,則返回true,並在Onsuccess方法中將其重定向到主頁。下面是代碼:成功登錄後顯示登出按鈕

function OnSuccess(response) { 
 
    var mesg = $("#lblMess")[0]; 
 
    
 
    switch (response) { 
 
     case true: 
 
      var url = "/Home/Search"; 
 
      takeToHomePage(url); 
 
      $(location).attr('href', url); 
 
      
 
      break; 
 
     case false: 
 
      mesg.style.color = "red"; 
 
      mesg.innerHTML = "Email id or Password is incorrect"; 
 
      break; 
 
     case "error": 
 
      mesg.style.color = "red"; 
 
      mesg.innerHTML = "Error occured"; 
 
      break; 
 
    } 
 
}

到這裏工作的罰款。現在,我在_layout.cshtml頁面中添加了一個註銷按鈕,我在登錄頁面中沒有任何可見性,因此如果在開始啓動之前顯示此註銷按鈕並且用戶無效,那麼註銷按鈕會顯示,但如果用戶已通過身份驗證並嘗試顯示註銷按鈕在真正的情況下,那麼它不工作。 需要幫助。

+0

。沒有用。只要做一個正常的提交和重定向。 –

+0

您使用表單身份驗證嗎? –

+0

是雷迪,這是一個窗體身份驗證 – Vikash

回答

0

現在我在做我在登錄頁面 知名度沒有_layout.cshtml頁面添加一個按鈕signout,所以如果我之前 開關開始顯示此signout按鈕,用戶不是有效的,那麼signout按鈕顯示,但如果 用戶通過身份驗證並試圖顯示退出按鈕真正的 情況下,它不起作用。

向服務器發出Ajax調用以檢查用戶是否已通過身份驗證。然後你可以切換按鈕顯示和隱藏。 This is not the best method to do it. But talking about good approach would be to create a custom CustomPrincipal by inheriting ICustomPrincipal and may more changes。如果你剛剛開始使用MVC,我認爲這對你來說太過分了。

此解決方案僅用於切換註銷按鈕的可見性,我不建議將此作爲最佳實踐。

$.get("User/CheckUserAuthenticity",function(response){ 
    if(response == "true") 
     { 
     //button show; 
     } 
    }); 

你的控制器動作可你爲什麼要使用AJAX如果意圖是重新成爲

public ActionResult CheckUserAuthenticity() 
    { 
     return Json(User.Identity.IsAuthenticated,JsonRequestBehavior.AllowGet); 
    } 
+0

在這裏,在最後添加的消息是,如果用戶被驗證,那麼真實的案例裏面我試圖隱藏登入按鈕和顯示signout按鈕,但情況並非如此它仍然只顯示按鈕的標誌。 – Vikash

+0

你用來隱藏和顯示按鈕的代碼是什麼。 –

+0

登錄按鈕id = $(「#signin」)。css(「display」,「none」); SignOut按鈕id = $(「#signout」).css(「display」,「block」);這是工作正常我使用此代碼之前啓動true和false的情況下(只在內部開關),但是當我在真實情況下使用此代碼它不起作用。 – Vikash