Roh*_*han 8 php laravel laravel-5 laravel-5.1
所以我正在使用Laravel 5安装,就像一个优秀的程序员一样,我正在尝试使用Laravel中的新表单请求功能从我的控制器中获取验证逻辑.
所以我继续创建一个名为CreateTenantRequest的表单请求,如下所示:
php artisan make:request CreateTenantRequest
Run Code Online (Sandbox Code Playgroud)
默认情况下,它false在authorize方法中返回一个并且它可以正常工作.如果我发出请求,它会被禁止.但后来我更新了规则并将authorize方法设置为true现在,当我从Postman发出相同的请求时,它说:
NotFoundHttpException in RouteCollection.php line 161:
Run Code Online (Sandbox Code Playgroud)
这是荒谬的,因为当我把它改为假时,它会返回禁止的罚款?
我错过了什么或做错了什么?
虽然这无关紧要,但我的规则数组如下:
return [
// Tenant details
'name' => 'required|max:255',
'username' => 'required|max:255|unique:tenant',
// Tenant Admin details
'first_name' => 'required',
'last_name' => 'required',
'email' => 'required|email|max:255',
'password' => 'required|confirmed|min:6',
];
Run Code Online (Sandbox Code Playgroud)
路线文件:
<?php
Route::group(['prefix' => 'api'], function(){
Route::post('authenticate', 'Auth\AuthController@authenticate');
// SuperAdmin Group
Route::group(['namespace' => 'Archive', 'middleware' => 'superadmin'], function(){
Route::resource('tenants', 'TenantController');
Route::get('tenants/{id}/users', 'TenantController@showUsersForTenant');
});
// Tenant Group
Route::group(['namespace' => 'Tenant'], function(){
Route::resource('roles', 'RoleController');
Route::resource('users', 'UserController');
});
// Remove before production
// Only for testing purposes
Route::get('test', function(){
// return JWTAuth::parseToken()->getPayload()->get('username');
});
});
Run Code Online (Sandbox Code Playgroud)
所以在与shock_gone_wild进行了一次竞价讨论后,我意识到请求不是ajax,因此laravel正在重新路由到会话中出错的URL.
我正在使用Postman REST客户端测试API,默认情况下它会发送基本的HTTP请求,但是当添加标头时,如下所示:
X-Requested-With:XMLHttpRequest
Run Code Online (Sandbox Code Playgroud)
它使请求Ajax然后进行laravel检查以查看它是否确实是ajax,因此它不是路由到url,而是在JSON中返回验证错误.
因此,任何时候如果有人创建一个解耦的Web服务并尝试使用Postman进行测试,请使用标头进行测试,以便您可以在应用程序中模拟实际的ajax请求.
| 归档时间: |
|
| 查看次数: |
1577 次 |
| 最近记录: |