laravel 的异步评级 (like/dislike)
Asynchronous rating (like/dislike) with laravel
我正在使用 laravel 实现 like/dislike 功能。除了异步请求,我把所有东西都准备好了 运行。我只希望登录用户能够 like/dislike 一个项目,因此必须在服务器端验证请求。我也希望它是一个异步请求,所以没有页面刷新。
执行此操作的好方法是什么?我已经加载了 jquery,因此仅使用 angular 就有点矫枉过正了。我将如何保护请求?我已经阅读了有关令牌的内容,但我对此不太确定。
最好的方法是在您的 config.php 文件中添加一个 csrf 过滤器。 Laravel 应该默认为您生成 csrf 值,但如果没有,您可以通过 blade.
以下方式使用它
{{ csrf_token() }}
您的 ajax 可能如下所示。请注意,csrf 令牌也可能在您的 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');
}
});
对我来说,在我的上一个项目中,我有一堆表格和一些 ajax 带有 csrf,所以我不得不将配置过滤器更改为此,因为我无法修复这两个,所以我创建了以下过滤器下面。
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 更多详情
我正在使用 laravel 实现 like/dislike 功能。除了异步请求,我把所有东西都准备好了 运行。我只希望登录用户能够 like/dislike 一个项目,因此必须在服务器端验证请求。我也希望它是一个异步请求,所以没有页面刷新。
执行此操作的好方法是什么?我已经加载了 jquery,因此仅使用 angular 就有点矫枉过正了。我将如何保护请求?我已经阅读了有关令牌的内容,但我对此不太确定。
最好的方法是在您的 config.php 文件中添加一个 csrf 过滤器。 Laravel 应该默认为您生成 csrf 值,但如果没有,您可以通过 blade.
以下方式使用它{{ csrf_token() }}
您的 ajax 可能如下所示。请注意,csrf 令牌也可能在您的 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');
}
});
对我来说,在我的上一个项目中,我有一堆表格和一些 ajax 带有 csrf,所以我不得不将配置过滤器更改为此,因为我无法修复这两个,所以我创建了以下过滤器下面。
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 更多详情