Laravel 邮递员中不允许出现异常
我正在为我的应用程序编写API登录注册系统。 我已经为登录和注册创建了一个控制器,因此我可以从Postman创建我的用户并从那里登录,但当我尝试调用Laravel 邮递员中不允许出现异常,laravel,laravel-5,laravel-5.2,laravel-5.3,laravel-5.4,Laravel,Laravel 5,Laravel 5.2,Laravel 5.3,Laravel 5.4,我正在为我的应用程序编写API登录注册系统。 我已经为登录和注册创建了一个控制器,因此我可以从Postman创建我的用户并从那里登录,但当我尝试调用my get details方法时,它会返回 作为方法,不允许出现异常 这是我的控制器 <?php namespace App\Http\Controllers\API; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use App\User; use I
my get details
方法时,它会返回
作为方法,不允许出现异常
这是我的控制器
<?php
namespace App\Http\Controllers\API;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\User;
use Illuminate\Support\Facades\Auth;
use Validator;
class PassportController extends Controller
{
//
public $successStatus = 200;
public function register(Request $request){
$validator = Validator::make($request->all(), [
'name' => 'required',
'email' => 'required|email',
'password' => 'required',
'c_password' => 'required|same:password',
]);
if ($validator->fails()) {
return response()->json(['error'=>$validator->errors()], 401);
}
$input = $request->all();
$input['password'] = bcrypt($input['password']);
$user = User::create($input);
$success['token'] = $user->createToken('MyApp')->accessToken;
$success['name'] = $user->name;
return response()->json(['success'=>$success], $this->successStatus);
}
public function login(){
if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){
$user = Auth::user();
$success['token'] = $user->createToken('MyApp')->accessToken;
return response()->json(['success' => $success], $this->successStatus);
}
else{
return response()->json(['error'=>'Unauthorised'], 401);
}
}
public function getDetails()
{
$user = Auth::user();
return response()->json(['success' => $user], $this->successStatus);
}
}
请在app->http->Middleware->VerifyCsrfToken的$except中添加您的函数url
拉威尔需要csrf。如果您从外部传递数据,它将不会传递csrf,因此此时您必须为此功能定义不需要csrf 您是否在使用laravel的passport?如果是,则可能有多个问题导致此问题
我想看看当你点击应用程序框架时你会得到什么,但这里有一些我发现自己正在处理的更常见的问题
我知道的一般问题(不考虑技术)
方法不是公共的
授权和接受应该在postman的表头中
当使用授权时,它需要如下所示:Headers选项卡
关键:授权
值:持有人EYJ0EXAIIOIJKV1QILCJHBGCIOIJSUZI1NII
这里的胡言乱语是您的访问令牌,没有任何逗号
检查服务器和laravel日志。有时邮递员会把事情搞砸,发送get而不是post请求,反之亦然
如果出现未经验证的错误
4.1在此处遵循以下步骤:
4.2从db/命令行复制客户机机密
4.3在图片中使用该端点
{{url\u key}}id我的站点的地址,例如demo.dev或htttp://localhost. 我不确定是否使用locahost(我只在vagrant上开发了laravel,所以我不知道会产生什么问题)
在这种情况下,标题应为空
4.4使用令牌进行身份验证
确保VerifyCsrfToken类如下所示
方法是getDetails()
,而路线是post
Route::post('details', 'API\PassportController@getDetails');
尝试将getDetails()
更改为postDetails()
并将路线更改为
Route::post('details', 'API\PassportController@postDetails');
你能不能删除我尝试过的起始PHP标记@AddWebSolutionPvtLtd的缩进,但它给出的错误像page notfound@PranavMandlik:getDetails()仅使用身份验证用户,对吗?是,用于已验证的用户only@PranavMandlik:请将您的路线放在[auth:api](即路线::post)之外(‘详情’、‘API’\PassportController@getDetails“);)和check我试图从标头发送,然后它会给我类似{“message”:“Unauthenticated.”你对这个msgyeah有什么想法吗?这很正常。你需要登录。你需要像get token这样的端点来登录。我会马上附上一张照片,说明它应该是什么样子。当我尝试给出类似{“error”:“invalid_client”这样的错误时,你有没有执行php artisan passport:install和php artisan passport:keys(按照下面开始操作),“message:“Client authentication failed”}那么我如何调用api/details url?仍然会得到相同的错误?为什么要同时使用get和post?@PranavMandlike将getDetails()
更改为postDetails()时会出现什么错误
和更改路线?请分享@pranavmandlik。您的路线还清楚地显示了route::post
的getDetails()
这只是函数名get和post,而不是依赖于它的dependen Route::post或Route::getI尝试了相同的代码,我使用post
Route for aget
函数收到了相同情况下的NotFoundHttpException
路由。您可以共享csrf控制器代码和web.php代码吗。@PranavMandlik
Route::post('details', 'API\PassportController@getDetails');
Route::post('details', 'API\PassportController@postDetails');