laravel - axios帖子上的403(禁止)。拉拉维尔 5.7
问题描述
我正在尝试在 vuejs 组件上使用 axios 执行发布请求,但它会引发403 forbidden
错误。这是我发布请求的 javascript 代码:
createMessage() {
axios.post('/mensajes/guardar', {
subject: this.subject,
username: this.username,
content: this.editorContent
})
.then((res) => {
this.formProcessed = true
this.swalMixin('success', '¡Mensaje enviado!')
setTimeout(() => { window.location = '/mensajes' }, 3000)
})
.catch((err) => {
let errors = err.response.data.errors
let firstError = Object.keys(errors)[0]
let message = errors[firstError][0]
this.swalMixin('error', message)
})
}
控制器处理它的功能:
public function store(MessageStoreRequest $request)
{
$recipient = User::where('username', $request->username)->firstOrFail();
$message = Message::create([
'sender_id' => Auth::id(),
'recipient_id' => $recipient->id,
'subject' => $request->title,
'content' => $request->content,
]);
return response()->json([
'message' => 'success'
], 200);
}
我的消息模型路由组:
Route::prefix('mensajes')->middleware(['auth', 'verified'])->group(function () {
Route::get('/', 'MessageController@index')->name('message.index');
Route::get('/ver/{id}', 'MessageController@show')->name('message.show');
Route::get('/crear', 'MessageController@create')->name('message.create')->middleware('can:create,App\Message');
Route::post('/guardar', 'MessageController@store')->name('message.store')->middleware('can:create,App\Message');
});
我创建了一个自定义请求来处理验证:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class MessageStoreRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'subject' => 'required|min:12',
'username' => 'required|',
'content' => 'required|min:37'
];
}
/**
* Custom message for validation
*
* @return array
*/
public function messages()
{
return [
'subject.required' => 'El asunto es obligatorio.',
'subject.min' => 'El asunto debe contener al menos 10 caracteres.',
'username.required' => 'El destinatario es obligatorio.',
'content.required' => 'El contenido del mensaje no puede estar vacío.',
'content.min' => 'El contenido del mensaje debe ser de al menos 30 caracteres.'
];
}
/**
* Filters to be applied to the input.
*
* @return array
*/
public function filters()
{
return [
'subject' => 'trim',
'username' => 'trim',
'content' => 'trim'
];
}
}
Message 模型有这个策略:
/**
* Determine whether the user can create messages.
*
* @param \App\User $user
* @return mixed
*/
public function create(User $user)
{
return $user->hasAccess(['create-message']);
}
我找不到问题。我一直在与其他模型一起工作,这是第一个引发此错误的模型。
解决方案
让我们authorize()
将自定义请求中的函数更改为return true
而不是return false
.
此功能用于根据权限允许或禁止访问。
推荐阅读
- javascript - How to specify this in an object literal with flow in js
- c# - Why my list only shows the last value after looping through it?
- typescript - Errors while using Immutable.Map
- react-native - 无法连接到安卓模拟器上的开发服务器
- python - How to find intersection of straight lines with Hough Peaks?
- php - Approach to sending email reminders to users - process
- logstash - logstash - output single event into multiple line output file
- java - Code design: How to ensure that DTO objects refer to the same object, avoid stackoverflow in circular references in Java?
- html - Angular version dispalyed in vendor.js
- ruby-on-rails-4 - Rails 自定义管理 gem