【问题标题】:Laravel Passport 401 Unauthorized Error using Apache and Vue使用 Apache 和 Vue 的 Laravel Passport 401 未经授权的错误
【发布时间】:2017-04-17 09:19:40
【问题描述】:

我正在尝试使用 vue 和 laravel 护照连接生成 laravel 用户 API,但我的标题中不断出现授权错误。这是我的代码

<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: 'robertrutenge@gmail.com',
      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 文件,但这似乎对我来说也不起作用。任何帮助将不胜感激:-)

【问题讨论】:

    标签: apache .htaccess laravel laravel-5 http-headers


    【解决方案1】:

    我认为如果您的 vue 应用程序和 laravel 应用程序结合使用,那么您可以使用您的 api 而无需任何授权标头,您只需要发送 X-CSRF-TOKEN 并在每个请求中发送该令牌,无需在此处发送授权检查

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

    【讨论】:

    • 这将是自消费 API 的最佳选择,但是他们已经使用令牌传递了 Authorization 标头,因此这无法解决问题。
    【解决方案2】:

    这在 vue.js 或 larvel 中没有问题。我将我的 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'); 
    
                }
    

    【讨论】:

    • 中间件handler叫什么名字?
    • 这是我的客户中间件伴侣
    【解决方案3】:

    解决 (2) 去 AuthServiceProvider.php

    关键点:设置令牌到期

    Passport::tokensExpireIn(Carbon::now()->addDays(1));

    您必须设置令牌过期时间 不可能是无限的

    【讨论】:

      猜你喜欢
      • 2022-11-26
      • 2017-10-07
      • 2020-01-28
      • 2019-01-12
      • 2018-10-23
      • 1970-01-01
      • 2017-01-10
      • 2015-04-25
      • 1970-01-01
      相关资源
      最近更新 更多