2011-07-03 32 views
0

如何通過使用jQuery的Auth組件來查找用戶是否登錄到CakePHP。如果一個用戶登錄允許的動作,如果不顯示一條警告,要求用戶登錄執行。CakePHP - 使用jQuery檢查用戶是否通過身份驗證登錄

<script> 
    $(document).ready(function(){ 
     $(".voteup").click(function() { 
      // var isLoggedIn = ... code needed 
      if(isLoggedIn){ 
       var Id = $(this).children("p").text(); 
       $(this).children("#article_thumbsUp").load("/comments/voteup/"+Id); 
      }else{ 
       alert('You must be logged in to vote on a comment'); 
      } 
     }); 
    }); 
</script> 
+0

你想在頁面渲染後這樣做嗎?在服務頁面之前,這在服務器上很常見。 –

+0

根據我的理解,您已經在檢查cakePHP以確保它們已經登錄,但是您希望向人們展示他們可以對事件進行評分,無論他們是否已登錄。我想你也會在服務器端檢查它們,以檢查它們是否在點擊投票時也登錄過? – djlumley

回答

2

假設你有一個CommentsController與動作check_login()

public function check_login() { 

    // $this->Auth->user() returns NULL or User info for logged in user 
    if ($this->Auth->user()) { 

     // your user is logged in echo success 
     ... 

    } else { 

     // you user is NOT logged in echo failure 
     ... 

    } 

} 
+0

這是我知道該怎麼做的控制器。不過,我想知道如何在jQuery中調用這個動作並按照。謝謝 –

+0

@CaboOne那麼,你會這樣做,你正在做jQuery的'voteup'的請求。創建2個AJAX請求或者更好的方法imo,只需在你的'voteup'操作中設置代碼來檢查登錄狀態,如果他們沒有登錄就吐出一個JSON響應,讓你知道構建一個註冊按鈕或一些東西。無法驗證用戶是否嚴格通過jQuery進行登錄。你必須點擊服務器來執行此操作。 – cspray

2

,則不應使用JavaScript爲此,這是不安全的。您應該在控制器中檢查此服務器端,如Charles Sprayberry的答案中所示。

然後在javascript中,您總是執行Ajax請求(使用$.get並帶回調),然後檢查響應以顯示警報或更新UI。

0

我能夠解決我的問題以下建議。所以,謝謝你們的幫助......

commments_controller.php

public function checklogin() {   
    $this->autoRender = false; 
    if ($this->Auth->user()) { 
     $loggedIn = 1; 
    } else { 
     $loggedIn = 0; 
    } 
    return $loggedIn; 
} 

jQuery代碼

<script> 
$(document).ready(function(){ 
var isLoggedIn = 0; 
$.ajax({ 
    type: "POST", 
    url: "/comments/checklogin", 
    success: function(msg){ 
     isLoggedIn = msg; 
    } 
}); 
$(".voteup").click(function() { 
    if(isLoggedIn == 1){ 
     var Id = $(this).children("p").text(); 
     $(this).children("#article_thumbsUp").load("/comments/voteup/"+Id); 
    }else{ 
     alert('You must be logged in to vote'); 
    } 
}); 
}); 
</script> 

它可以很好地......我不知道這是否是最好的,但它作品

相關問題