我将如何在 Laravel 中创建一个安全的赞成/反对票系统,例如 reddits,甚至是无法加载虚假 ajax 请求的堆栈溢出系统。(对不起,如果我不知道术语)。
我有 3 张桌子:
**User**
id
**Post**
id
**Vote**
id
user_id
post_id
vote (int)
我的一般想法是,当单击赞成或反对按钮时,使用 JQuery 使用具有 post_id 和投票的 POST 数据触发 AJAX,1 表示赞成,-1 表示反对)。这将由 VotesController@vote 路由选择。vote 方法将检查用户是否经过身份验证,检查是否有来自同一用户和同一帖子的投票,如果投票存在:更改它(downvote),否则它会添加它(upvote)。
这是我的伪代码
function vote()
{
    //Checks if user is logged in
    if(Auth::check()){
        //checks if ajax request
        if (Request::ajax())
        {
                            //get my data
            $post = Input::post('post');
                            $vote = Input::post('vote');
            $user = Auth::user()->id;
            //checks if user voted
            $vote = querythatisnotyetcoded
            //if row exists 
            if($vote->count() > 0){
                //change row AKA DOWNVOTE
                Vote->vote = $vote // however you change values
            }
            else{
                //add new row AKA UPVOTE
                Vote::create([
                    'user_id' => $user,
                    'post_id' => $post,
                                'vote' => $vote
                ]);
            }
        }
        else{
            return "No Ajax Request";
        }
    }
    else{
        return "Not logged in";
    }
}   
请让我知道该逻辑是否安全。
*编辑:不知道为什么我的代码是半棕色的(已修复!)