使用JWT的Laravel Mobile API

时间:2015-12-07 02:38:12

标签: api laravel jwt

对不起,我是API新手

我有一个laravel项目,我想创建API将我的laravel数据库连接到移动应用程序,所以我尝试在我的作曲家上使用jwt

"tymon/jwt-auth": "0.5.*"

之后我添加了我的路线这段代码

Route::group(['prefix' => 'api'], function() {

    Route::post('login', 'Api\AuthController@login');

    Route::group(['middleware' => ['jwt.auth', 'jwt.refresh']], function() {
        Route::post('logout', 'Api\AuthController@logout');

        Route::get('test', function(){
            return response()->json(['foo'=>'bar']);
        });
    });
});

这是我在控制器上的登录功能

public function login(Request $request) {
    $credentials = $request->only('email', 'password');

    try {
        // attempt to verify the credentials and create a token for the user
        if (! $token = JWTAuth::attempt($credentials)) {
            return response()->json(['error' => 'invalid_credentials'], 401);
        }
    } catch (JWTException $e) {
        // something went wrong whilst attempting to encode the token
        return response()->json(['error' => 'could_not_create_token'], 500);
    }

    // all good so return the token
    return response()->json(compact('token'));
}

之后我使用POSTMAN检查我的API的响应,我插入url localhost:8000 / api / login

但我收到了令牌错误

TokenMismatchException in VerifyCsrfToken.php line 53

我该怎么办?我必须在哪里创建令牌?

1 个答案:

答案 0 :(得分:4)

你正在获得JWT代币和CSRF代币混淆。这个问题与JWT无关,尽管有“令牌”一词。

Laravel默认情况下会requires a _token valuePOST个请求一起传递以阻止CSRF attacks

您可以将此功能包含在您的请求中,也可以通过修改App\Http\Middleware\VerifyCsrfToken的{​​{1}}值来为您的API停用CSRF保护。