如何通过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>
答案 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>
它运作良好......我不确定它是否是最好的但它有效