【问题标题】:How to resolve Laravel 401 (Unauthorized) error如何解决 Laravel 401(未经授权)错误
【发布时间】:2020-01-24 06:19:45
【问题描述】:

如何解决特定单个 URL 的 Laravel 401(未经授权)错误。

url 可以直接访问,但是当使用 axios 发送请求时,会出现这个错误。

【问题讨论】:

  • 显示控制器和中间件的代码。这也是一个api吗?
  • 您的身份验证如何工作?饼干会议? jwt ?

标签: laravel axios unauthorized


【解决方案1】:

api_token: this.user.api_token

         axios.post("http://foo",
         {headers: { 'Authorization' : 'Bearer '+ api_token}})
         .then(response => {
                    //action
                })

链接:https://forum.vuejs.org/t/401-unauthorized-vuejs-laravel-and-passport/59770

       postComment() {
      axios.post('/api/posts/'+this.post.id+'/comment', {
        api_token: this.user.api_token,
        body: this.commentBox
      })

但请确保您拥有“user.api_token”

【讨论】:

    【解决方案2】:

    有些人只是假设所有的配置都是开箱即用的;但你需要:

    按照这个 Laravel 文档为您的所有用户获取 api_token。 Laravel api authentication

    注意:注册用户时,如果数据库中的用户api_token仍然保存为NULL,则进入用户模型,将api_token添加到可填充数组中

    //Model/User.php
    protected $fillable = [
            ...
            'api_token',
            ...
        ];
    

    在您的视图布局中app.blade.php 为您的令牌创建一个元,就像您的csrf

    //views/layout/app.blade.php   
    
    <!-- APIToken -->
    <meta name="api_token" content="{{ Auth::user()->api_token }}">
    

    终于在你的main.jsapp.js;您可以将其包含在每个发送的请求中

    //resources/app.js
    
    window.axios.defaults.headers.common = {
        'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
        'Authorization': 'Bearer '+ document.querySelector('meta[name="api_token"]').getAttribute('content'),
        'X-Requested-With': 'XMLHttpRequest'
      };
    

    这很有效,并且在我经历过之后会对某人有所帮助;同时 Laravel Passport 和 Sanctum 是更好的 api 认证推荐

    【讨论】:

      猜你喜欢
      • 2020-09-17
      • 1970-01-01
      • 2019-01-12
      • 1970-01-01
      • 2020-11-15
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      • 2017-12-20
      相关资源
      最近更新 更多