如何记录控制器中出现的问题

Posted

技术标签:

【中文标题】如何记录控制器中出现的问题【英文标题】:How can I log what is going wrong in my controller 【发布时间】:2020-02-01 16:01:38 【问题描述】:

我正在尝试使用 laravel/vue.js/vuex 在我的网站上注册用户。在我的商店操作中,我调用 tryRegister 操作来发布请求。但它一直以未经授权的 401 错误响应,我不明白为什么。因此,我将我的控制器设置为最基本的,因为它可以得到响应,即使这样它仍然会抛出 401 授权错误。我是后端开发的新手,只是不明白为什么会发生这种情况。我确实知道这条路线是有效的。如何让我的控制器功能给出基本响应以查看它是否正常工作?为什么即使我没有对授权做任何事情,它也会给出授权错误,这只是控制器给出的标准错误吗?

尝试注册操作

tryRegister(context, credentials) 
    return new Promise((resolve, reject) => 
        axios
            .post("/api/auth/register", credentials)
            .then(response => 
                console.log(response.data);
                //context.commit("registerSucces", response.data);
                resolve(response.data);
            )
            .catch(error => 
                console.log(error.response);
                reject(error);
            );
    );

授权控制器注册函数

public function register(Request $request)

    // $user = User::create([
    //     'email'    => $request->email,
    //     'password' => $request->password,
    // ]);

    //$token = auth('api')->login($user);

    //return $this->respondWithToken($token);


    return response()->json(['message' => 'controller register']);

【问题讨论】:

在控制器的构造方法中检查您是否在路由中使用了auth 中间件。 你有路由的令牌吗?有中间件吗?路由是否以某种方式受到保护(可能在防火墙后面 - 我假设 laravel 有某种防火墙)? @zahidhasanemon 我在构造函数中有一个身份验证中间件。它说$this->middleware('auth:api', ['except' => ['login']]);,所以我认为它不对登录功能进行授权,所以我认为我不希望它用于注册。但是我怎样才能进行 axios 调用以便它通过中间件呢?还是这取决于中间件的类型? 我目前正在阅读cloudways.com/blog/controllers-middleware-laravel 以更好地了解中间件! 【参考方案1】:

由于auth 中间件,无法访问控制器的注册方法。所以你得到了未授权的错误。使其未经授权即可访问。在控制器的构造方法中改变这一行,如下所示。

$this->middleware('auth:api', ['except' => ['login', 'register']]);

loginregister 是控制器的方法,现在无需授权即可访问。

【讨论】:

以上是关于如何记录控制器中出现的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何从控制器动态设置总记录

如何在 Python 中记录 xbox/gamepad 控制器的状态?

如何在 ASP.NET Core API 控制器中获取多个表的记录

如何从控制器获取记录到 Ajax laravel 5.2

如何将数据记录到 Flutter 控制台?

如何对数据库中的记录进行版本控制[关闭]