php - 使用 laravel 进行异步评分(喜欢/不喜欢)

标签 php jquery laravel asynchronous

我正在使用 laravel 实现喜欢/不喜欢功能。除了异步请求之外,我已经启动并运行了所有内容。我只希望登录的用户能够喜欢/不喜欢某个项目,因此必须在服务器端验证请求。我还希望它是一个异步请求,这样就不需要页面刷新。

什么是做到这一点的好方法?我已经加载了 jquery,因此仅使用 Angular 就有点过分了。我将如何保护该请求?我读过有关 token 的内容,但对此不太确定。

最佳答案

执行此操作的最佳方法是将 csrf 过滤器添加到您的 config.php 文件中。默认情况下,Laravel 应该为您生成 csrf 值,但如果没有,您可以通过 Blade 按以下方式使用它。

{{ csrf_token() }}

您的 ajax 可能如下所示。请注意,csrf token 也可能位于您的 header 标记中,但由于我的代码的工作方式,我将其放在这里。

$.ajax({  
            type: "POST",
            beforeSend: function(request) {
              return request.setRequestHeader('X-CSRF-Token',"{{ csrf_token() }}");
            },
            url: baseLocalUrl, //this would be your path to your route
            data: 
            {
                html: sendHTML //data separated by a comma
            },
            success: function(data){
                alert("Success");
              },
              error: function(xhr, textStatus, thrownError) {
                alert('Failed');
              }


});

对于我的上一个项目,我有一堆表单和一些带有 csrf 的 ajax,所以我必须将配置过滤器更改为此,因为我在修复这两个项目时遇到了麻烦,所以我在下面创建了以下过滤器。

Route::filter('csrf', function()
{
    $token = Request::ajax() ? Request::header('x-csrf-token') : (Input::get('csrf_token') ?: Input::get('_token'));
    $test1 = Session::getToken() != Input::get('csrf_token') &&  Session::getToken() != Input::get('_token');
    $test2 = Session::token() != $token;

    if($test2 && $test1){

         throw new Illuminate\Session\TokenMismatchException;
    }
});

Reference更多详情

关于php - 使用 laravel 进行异步评分(喜欢/不喜欢),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28012818/

相关文章:

php - 如何从具有一对多关系的3个表中获取数据

php - TYPO3 登录错误

jQuery 在 ASP.NET Core 2.2 Razor View 中不可用

php - 使用 Laravel Query Builder 进行复杂的 MySQL 内连接查询

php - 在php中显示最近上传的图像仅显示与提交到该die的其他数据相对应的单个图像

PHP上传和带宽/流量问题

javascript - 我怎样才能使这段代码更短

javascript - Chrome 扩展内容脚本是否可以对本身是 Chrome 扩展一部分的 html 文件发出 jQuery AJAX 请求?

php - 在 Laravel-5 中取消定义方法?

php - Laravel,sync() - 如何同步数组并传递额外的数据透视字段?