Laravel 邮递员中不允许出现异常

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

我正在为我的应用程序编写API登录注册系统。 我已经为登录和注册创建了一个控制器,因此我可以从Postman创建我的用户并从那里登录,但当我尝试调用
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 a
    get
    函数收到了相同情况下的
    NotFoundHttpException
    路由。您可以共享csrf控制器代码和web.php代码吗。@PranavMandlik
    Route::post('details', 'API\PassportController@getDetails');
    
    Route::post('details', 'API\PassportController@postDetails');