首页 > 解决方案 > 错误":"token_not_provided:Laravel、Vue 和 JWT 中的 API 身份验证

问题描述

我在 Laravel 中创建 JWT API 身份验证,如指南中所述:

https://codeburst.io/api-authentication-in-laravel-vue-spa-using-jwt-auth-d8251b3632e0

其他一切都很好,但我在登录时遇到了这个问题: 错误“:”token_not_provided 登录似乎正在成功,正如我在控制台或邮递员中看到的那样,但从未检索到令牌。当应用程序尝试在 api/auth/user 端点加载用户数据时,就会发生这种情况。

GET http://127.0.0.1:8000/api/auth/user 400(错误请求)

这是我的登录方法:

public function login(Request $request)
{
    $credentials = $request->only('email', 'password');
    if ( ! $token = JWTAuth::attempt($credentials)) {
            return response([
                'status' => 'error',
                'error' => 'invalid.credentials',
                'msg' => 'Invalid Credentials.'
            ], 400);
    }
return response([
            'status' => 'success'
        ]) ->header('Authorization', $token);
}

然后是用户方法

public function user(Request $request)
{
    $user = User::find(Auth::User()->id);
   return response([
            'status' => 'success',
            'data' => $user
        ]);
        return $user;
}

认证路由:

Route::post('auth/login', 'JWTAuthenticateController@login');
Route::group(['middleware' => 'jwt.auth'], function(){  
 Route::post('auth/logout', 'JWTAuthenticateController@APIlogout');

  Route::get('auth/user', 'JWTAuthenticateController@user');
});

VueJS 登录组件:

<script>
  export default {
    data(){
      return {
        email: null,
        password: null,
        error: false


      }
    },
    methods: {
      login(){
        var app = this
        this.$auth.login({
            params: {
              email: app.email,
              password: app.password,

            }, 
            success: function () {
            console.log('Success')
            },
            error: function () {
                        console.log('Something Went wrong!')


            },
            rememberMe: true,
            redirect: {name:'inventories'},
            fetchUser: true,
        });       
      },
    }
  } 
</script>

我无法弄清楚如何解决这个问题。只是不要告诉为什么没有返回授权标头:

 return response([
                'status' => 'success'
            ]) ->header('Authorization', $token);

请协助。

标签: laravelvue.jsjwt

解决方案


推荐阅读