代码之家  ›  专栏  ›  技术社区  ›  Djave

Laravel Passport CreateFreshApiToken初始登录和工作流

  •  0
  • Djave  · 技术社区  · 7 年前

    我有一个Vue CLI前端,所以我试图使用Laravel Passport来处理请求的身份验证。

    https://laravel.com/docs/5.7/passport#consuming-your-api-with-javascript

    我有一个 api/login 执行以下操作的路由( almost copy and pasted from here ):

    public function login(){ 
      if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){ 
        $user = Auth::user(); 
        $success['token'] =  $user->createToken('MyApp')->accessToken; 
        return response()->json(['user' => $user], $this->successStatus);
      } 
      else{ 
        return response()->json(['error'=>'Unauthorised'], 401); 
      } 
    }
    

    在我用AJAX请求命中它之后,用户就成功登录了。

    但如果我在我的Vue动作中做了这样的事情:

    login({commit, dispatch}, {email, password}){
      axios.post('/api/login', {
        email, password 
      }).then( response => {
        console.log("Check login was successful", response.data);
        commit('setUser', response.data);
        axios.get("/api/user").then(response => {
          console.log("Still logged in:", response);
        });
      });
    

    控制台显示如下:

    Check login was successful {user: {…}}
    GET http://localhost:8080/api/user 401 (Unauthorized)
    

    拉维尔医生说。。。

    此Passport中间件将向传出响应附加一个laravel_令牌cookie。

    我做错了什么/我该怎么做 laravel_token 为了将来的请求?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Djave    7 年前

    我通过做以下的事情解决了这个问题。

    我已经在创造 accessToken ,但从未寄回。所以第一步:

    if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){ 
      $user = Auth::user(); 
      $accessToken =  $user->createToken('MyApp')->accessToken; 
      return response()->json(compact('user','accessToken'), $this->successStatus);
    } 
    

    然后在我的AXIOS请求:

    axios.post('/api/login', {
        email, password 
      }).then( response => {
        // Send the auth token every time : )
        axios.defaults.headers.common['Authorization'] = "Bearer " + response.data.accessToken;
        commit('setUser', response.data.user);
      });
    
    推荐文章