CakePHP - используйте jQuery, чтобы проверить, вошел ли пользователь в систему через Auth - PullRequest
0 голосов
/ 03 июля 2011

Как я могу узнать, вошел ли пользователь в CakePHP через компонент Auth, используя 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>

Ответы [ 3 ]

2 голосов
/ 04 июля 2011

Вы не должны использовать javascript для этого, это совсем не безопасно.Вы должны проверить это на стороне сервера, в контроллере, как показано в ответе Чарльза Спрейберри.

Затем в javascript вы всегда выполняете запрос Ajax (используйте $.get с обратным вызовом) и проверяете ответдля отображения предупреждения или обновления пользовательского интерфейса.

2 голосов
/ 03 июля 2011

Если у вас есть 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 голосов
/ 04 июля 2011

Мне удалось исправить мою проблему с помощью следующего предложения.Так что, ребята, спасибо за вашу помощь ...

commments_controller.php

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

jQuery Code

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

Это работает хорошо ... Я не уверен, если этолучший, но он работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...