2016-12-02 188 views
0

我想连接使用vue和laravel护照生成laravel用户API,但我不断收到我的头文件中的授权错误。这ismy代码Laravel Passport 401使用Apache和Vue的未经授权的错误

<script> 
import Hello from './components/Hello' 

export default { 
    name: 'app', 

    components: { 
    Hello 
    }, 
    created() { 
    const postData = { 
     grant_type: 'password', 
     client_id: 2, 
     client_secret: 'sXdg5nOO4UU2muiHaQnTq4hDQjyj17Kd9AeKuNEx', 
     username: '[email protected]', 
     password: 'password', 
     scope: '' 

    } 
    this.$http.post('http://localhost:8000/oauth/token', postData) 

    .then(response => { 
    console.log(response) 

    const header = { 
     'Accept': 'application/json', 
     'Authorization': ~'Bearer ' + response.body.access_token 
    } 
    this.$http.get('http://localhost:8000/api/user', {headers: header}) 

    .then(response => { 
     console.log(response) 
    }) 
    }) 
    } 
} 
</script> 

我已经做了研究和回答最多建议修改Apache的配置文件或.htaccess文件,但也似乎并没有在我结束工作。任何帮助将不胜感激:-)

回答

1

这不是问题的授权检查上。我将我的Laravel API从Apache移动到nginx,然后工作正常。我更新了我的中间件处理程序。那么Apache服务器上工作正常

$origin = $request->server()['HTTP_ORIGIN']; 

      if(in_array($origin, $url)){ 
       header('Access-Control-Allow-Origin: '. $origin); 
       header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization, X-Csrf-Token'); 

      } 
+0

中间件处理程序的名称是什么? – user3098538

+0

这是我自己的中间件伴侣 – channasmcs

1

我认为如果你的vue应用程序和laravel应用程序相结合,那么你可以使用你的API没有任何授权头,你只需要发送X-CSRF-TOKEN并发送该令牌要求没有必要在vue.js或larvel送来

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

+0

这将是一个自耗API的最佳选择,但是他们已经通过授权头有令牌,以便这不会解决问题。 – Dan

0

解析(2) 去 AuthServiceProvider.php

关键点:令牌

护照:: tokensExpireIn(碳::设定到期NOW() - > addDays(1));

你必须设置令牌到期 不能是无限的

相关问题