以下是点击按钮时调用的模态
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">Compose New Task</h4>
</div>
<div class="modal-body db">
<div class="form-group db">
<label class="col-sm-6 control-label">Current Password </label>
<div class="col-sm-6">
<input type="password" id="current_password" class="form-control">
</div>
</div>
<div class="form-group">
<label class="col-sm-6 control-label">New Password </label>
<div class="col-sm-6">
<input type="password" id="new_password" class="form-control">
<input type="hidden" value="{{ csrf_token() }}" id="csrftoken">
</div>
</div>
<div class="form-group">
<div class="error" id="message"></div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" id="updatePassword">Save changes</button>
</div>
</div>
</div>
上述代码中的相关行是11号
$("#updatePassword").click(function () {
var current_password = document.getElementById('current_password').value;
var new_password = document.getElementById('new_password').value;
var token = document.getElementById('csrftoken').value;
$.post('/modalupdatePassword', {'current_password': current_password, 'new_password': new_password, '_token': token}, function (data) {
var parsed = JSON.parse(data);
console.log(parsed);
$('#message').append(parsed);
});
});
这是我的modalPasswordUpdate函数
public function modalUpdate(Request $request)
{
$current_password = bcrypt($request->current_password);
$updateRequest = User::where('id', Auth::user()->id)
->where('password', $current_password)
->first();
echo json_encode($current_password);
}
现在每次发送请求时我都会得到不同的哈希
以下是我更新的代码
Route::get('check', function()
{
echo $password = Hash::make('secret');
});
每次都会返回新密码
答案 0 :(得分:1)
您通过邮寄方式发送请求。 Laravel文档指出,VerifyCsrfToken
中间件将在发布请求期间查找X-CSRF-TOKEN
个请求标头,因此请尝试以下操作。
将令牌添加到文档头部的元标记中。
<meta name="csrf-token" content="{{ csrf_token() }}" />
现在将X-CSRF-TOKEN
作为标题添加到全局ajax设置中,如此
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
现在所有AJAX请求都会自动包含CSRF令牌。
您可以在Laravel docs here上了解更多相关信息。