首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用laravel进行异步评级(喜欢/不喜欢)

用laravel进行异步评级(喜欢/不喜欢)
EN

Stack Overflow用户
提问于 2015-01-18 17:48:08
回答 1查看 1.2K关注 0票数 2

我正在使用laravel实现一个类似/不喜欢的特性。除了异步请求之外,我已经启动并运行了所有东西。我只希望登录用户能够喜欢/不喜欢某一项,因此请求必须在服务器端进行验证。我还希望它是一个异步请求,所以不会刷新页面。

做这件事的好方法是什么?我已经加载了jquery,所以仅仅为了这一点使用角就有点过分了。我该如何保护请求?我读过关于记号的东西,但我不太确定。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-18 18:01:40

最好的方法是向您的config.php文件中添加一个csrf过滤器。在默认情况下,Laravel应该为您生成csrf值,但是如果没有,您可以在刀片中使用以下方式。

代码语言:javascript
运行
复制
{{ csrf_token() }}

您的ajax可能如下所示。注意,csrf令牌也可能出现在标头标记中,但是我在这里将其放在这里,因为我的代码的工作方式。

代码语言:javascript
运行
复制
$.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,所以我不得不将配置过滤器更改为这个,因为我很难修复这两个表单,所以我在下面创建了下面的过滤器。

代码语言:javascript
运行
复制
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提供更多详细信息

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28012818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档