CakePHP - 使用jQuery检查用户是否通过Auth登录

时间:2011-07-03 15:50:22

标签: jquery cakephp authentication

如何通过jQuery查看用户是否通过Auth组件登录CakePHP。如果用户已登录,则允许执行操作,如果未显示要求用户登录的警报。

<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>

3 个答案:

答案 0 :(得分: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
        ...

    }

}

答案 1 :(得分:2)

你不应该使用javascript,它根本不安全。您应该在控制器中检查此服务器端,如Charles Sprayberry的答案所示。

然后在javascript中,您始终执行Ajax请求(使用带有回调的$.get),并检查响应以显示警报或更新UI。

答案 2 :(得分: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>

它运作良好......我不确定它是否是最好的但它有效

相关问题