Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 来自报头的JWT令牌访问_Json_Laravel_Jwt_Token - Fatal编程技术网

Json 来自报头的JWT令牌访问

Json 来自报头的JWT令牌访问,json,laravel,jwt,token,Json,Laravel,Jwt,Token,我正在使用JWT令牌在Laravel中制作API,我想制作CRUD操作,我已经在Postman中测试了我的API 现在的问题是,我想通过Laravel刀片视图实现它,在postman中,我可以在标题中设置授权承载,我将如何在Laravel应用程序中实现这一点?不是在Postman中,简而言之,我想设置头,这样我就可以在每个请求中访问令牌 控制器: <?php class NewController extends Controller { public function log

我正在使用JWT令牌在Laravel中制作API,我想制作CRUD操作,我已经在Postman中测试了我的API

现在的问题是,我想通过Laravel刀片视图实现它,在postman中,我可以在标题中设置授权承载,我将如何在Laravel应用程序中实现这一点?不是在Postman中,简而言之,我想设置头,这样我就可以在每个请求中访问令牌

控制器:

<?php

class NewController extends Controller
{

    public function login(Request $request)
    {
        $credentials = $request->only('email', 'password');
        $token = auth()->attempt($credentials);
        return $this->createNewToken($token);
    }

    public function register(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'name' => 'required|string|between:2,100',
            'email' => 'required|string|email|max:100|unique:users',
            'password' => 'required|string|confirmed|min:6',
        ]);

        if ($validator->fails()) {
            return response()->json(array(
                "status" => false,
                "errors" => $validator->errors()
            ), 400);
        }

        $user = User::create(array_merge(
            $validator->validated(),
            ['password' => bcrypt($request->password)]
        ));

        return response()->json([
            'status' => true,
            'message' => 'User successfully registered',
            'user' => $user
        ], 201);
    }

    public function refresh()
    {
        return $this->createNewToken(auth()->refresh());
    }

    public function userProfile()
    {
        return $this->getAuthenticatedUser();
    }

    public function me()
    {
        $user = JWTAuth::parseToken()->authenticate();
        return response()->json(array($user), 400);
    }

    protected function createNewToken($token)
    {
        return response()->json([
            'access_token' => $token,
            'token_type' => 'bearer',
            'expires_in' => auth()->factory()->getTTL() * 60,
            'user' => auth()->user()
        ]);
    }

    public function getAuthenticatedUser()
    {
        try {

            if (!$user = JWTAuth::parseToken()->authenticate()) {
                return response()->json(['user_not_found'], 404);
            }

        } catch (Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {

            return response()->json(['token_expired'], $e->getStatusCode());

        } catch (Tymon\JWTAuth\Exceptions\TokenInvalidException $e) {

            return response()->json(['token_invalid'], $e->getStatusCode());

        } catch (Tymon\JWTAuth\Exceptions\JWTException $e) {

            return response()->json(['token_absent'], $e->getStatusCode());

        }

        return response()->json(compact('user'));
    }
}

您是否在刀片视图中使用类似于
Vue
React
的内容?不,我使用的是Laravel刀片视图。令牌用于为
API
s提供授权。如果您所做的只是提供刀片视图,那么您不需要使用
JWT
。好的,谢谢。
    'prefix' => 'auth',
], function ($router) {
    Route::post('login', [App\Http\Controllers\NewController::class, 'login'])->name('apisignin');
    Route::post('getauth', [App\Http\Controllers\NewController::class, 'getAuthenticatedUser'])->name('getAuthenticatedUser');
    Route::post('userProfile', [App\Http\Controllers\NewController::class, 'userProfile']);
    Route::post('me', [App\Http\Controllers\NewController::class, 'me']);
});